利用FileUpload控件
1.单文件上传
aspx前台页面:
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="上传文件" onclick="Button1_Click" /></br>
<asp:Label ID="Label1" runat="server" Height="269px" Text="Label" Width="360px"></asp:Label>
</div>
protected void Button1_Click(object sender, EventArgs e)
{
String savePath = @"F:\upload\"; //保存路径
if (FileUpload1.HasFile) //如果有文件上传
{
try
{
String filename; //文件名
filename = FileUpload1.FileName; //得到文件名
savePath += filename; //路径+文件名
FileUpload1.SaveAs(savePath); //将上传文件的内容保存到服务器上指定的路径
Page.Response.Write(FileUpload1.PostedFile.ContentType + "</br>" + FileUpload1.PostedFile.ContentLength + "</br>"); //返回上传的文件的MIME类型和文件大小
Page.Response.Write("上传成功");
}
catch (Exception ex)
{
Response.Write("出错:" + ex.Message.ToString());
}
}
else
{
Response.Write("没有文件,请选择");
}
}
2.多文件上传
多文件上传可以利用多个单文件上传逐个进行处理,也可以利用HttpFileCollection从表单中获得所有文件,然后逐个存入服务器
前台页面再增加一个FileUpload控件;
后台代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
string filepath = Server.MapPath("upload") + "\\";
HttpFileCollection uploadFiles = Request.Files; //从表单中获取所有上传的文件
for (int i = 0; i < uploadFiles.Count; i++)
{
HttpPostedFile postedFile = uploadFiles[i]; //提供客户端对已上传单独文件的访问
try
{
if (postedFile.ContentLength > 0) //文件大小大于0
{
Response.Write("文件" + i.ToString() +
System.IO.Path.GetFileName(postedFile.FileName) +
"<br/>");
postedFile.SaveAs(filepath + System.IO.Path.GetFileName(postedFile.FileName));//存入服务器
}
}
catch (Exception ex)
{
Response.Write("出错" + ex.Message.ToString());
}
}
关于上传文件大小的限制
在ASP.NET 2.0中FileUpload默认上传文件最大为4M,不过我们可以在web.cofig中修改相关节点来更改这个默认值,相关节点如下:
〈system.web>
〈httpRuntime maxRequestLength="40690" executionTimeout="6000" />
〈/system.web>
maxRequestLength表示可上传文件的最大值,executionTimeout表示ASP.NET关闭前允许发生的上载秒数。