ASP.NET实现多文件上传
ASP.NET实现多文件上传一、固定数量的多文件上传
界面
上传的实现代码
//单击执行多文件上传
protected void btnFileUpload_Click(object sender, EventArgs e)
{
//判断是否存在上传文件
/*bool flag = false; ;
bool[] b = { FileUpload1.HasFile, FileUpload2.HasFile, FileUpload3.HasFile };
foreach (bool item in b)
{
if (item)
{
flag = true;
}
}*/
//判断是否存在上传文件
if (!FileUpload1.HasFile && !FileUpload2.HasFile && !FileUpload3.HasFile)
{
lblMessage.Text = "至少选择一个上传的文件!";
}
else
{
/*提供对客户端上载文件的访问,并组织这些文件,它是一个文件的集合.
Request.Files获取客户端上载文件的集合*/
HttpFileCollection filecoll = Request.Files;
//循环上传文件的集合,并上传每一个文件
for (int i = 0; i < filecoll.Count; i++)
{
/*得到上传的单个文件,
* 通过HttpPostedFile实例来处理单个上传文件的访问*/
HttpPostedFile myfile = filecoll[i];
//得到上传文件大小判断文件是否存在
if (myfile.ContentLength > 0)
{
if (myfile.ContentLength < 10485760)
{
try
{
//得到上传的文件名
myfile.SaveAs(Page.MapPath("~/Files/") +
myfile.FileName.Substring(myfile.FileName.LastIndexOf(@"\\") + 1));
//这里得到上传文件名的方式还可以是:
/* myfile.SaveAs(Page.MapPath("~/Files/")
+ System.IO.Path.GetFileName(myfile.FileName));*/
lblMessage.Text = "文件上传成功!";
}
catch (Exception)
{
lblMessage.Text = "上传文件发生错误!";
}
}
else
{
lblMessage.Text = "上传文件不能大于10MB";
}
}
}
}
}
二、动态的添加多文件上传:
界面
前端代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MultiFileUpload.aspx。cs"
Inherits="MultiFileUpload" %>
<!DOCTYPE>
<html>
<head runat="server">
<title>多文件上传测试</title>
<script type="text/javascript">
function addFile() {
var li = document.createElement("li");
var f = document.createElement("input");
f.setAttribute("type", "file")
f.setAttribute("name", "File")
f.setAttribute("size", "50")
li.appendChild(f)
var d = document.createElement("input");
d.setAttribute("type", "button")
d.setAttribute("onclick", "deteFile(this)");
d.setAttribute("value", "移除")
li.appendChild(d)
document.getElementById("_container").appendChild(li);
}
function deteFile(o) {
while (o.tagName != "li") o = o.parentNode;
o.parentNode.removeChild(o);
}
</script>
</head>
<body>
<form id="form1" runat="server" method="post" enctype="multipart/form-data">
<h3>多文件上传</h3>
用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<li id="_container">
<input type="file" size="50" name="File" />
</li>
<li>
<input type="button" value="添加文件(Add)" onclick="addFile()" />
</li>
<li style="padding:10px 0">
<asp:Button runat="server" Text="开始上传" ID="UploadButton"
onclick="UploadButton_Click"></asp:Button>
</li>
<li>
<asp:Label ID="strStatus" runat="server" Font-Names="宋体" Font-Bold="True" Font-Size="9pt"
Width="500px" BorderStyle="None" BorderColor="White"></asp:Label>
</li>
</form>
</body>
</html>
后台代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class MultiFileUpload : System.Web.UI.Page
{
protected void UploadButton_Click(object sender, EventArgs e)
{
///'遍历File表单元素
HttpFileCollection files = HttpContext.Current.Request.Files;
/// '状态信息
System.Text.StringBuilder strMsg = new System.Text.StringBuilder("您输入的用户名是:" + TextBox1.Text + "<br/>");
strMsg.Append("上传的文件分别是:<hr color='red'/>");
try
{
for (int iFile = 0; iFile < files.Count; iFile++)
{
标签: