实例说明
上传文件功能在网站开发中是比较常用的功能,例如,在视频网站中用户可以上传自己的视频以供大家的欣赏。但是在Asp.net中对上传文件的大小具有限制。在默认情况下用户只能上传4MB大小的文件。这样会给用户带来不便。本实例将允许用户上传40MB大小的文件。运行本实例,如图1所示,在页面中用户可以选择需要上传的文件,输入上传后文件的名称。单击“上传”按钮实现文件的上传功能。
图1 用ASP.NET传送大文件
关键技术
上传大文件主要通过修改Web.config文件来实现,在Web.config文件中添加httpRuntime节,在该节中修改两个参数,第一个参数maxrequestlength为最大上传容量,第二个参数executiontimeout为所响应的时间。本实例修改的代码如下:
<httpRuntime maxRequestLength="40960" executionTimeout="6000"/>
设计过程
(1)新建一个网站,将其命名为UploadBigFile,默认主页为Default.aspx。
(2)该页中涉及的主要控件如表1所示。
表1 Default.aspx页面涉及的控件
类型 | 控件ID | 用途 |
标准/ TextBox | txtName | 输入上传后文件的名称 |
标准/ Button | btnSend | 执行上传操作 |
数据/ FileUpload | fupFileSend | 选择需要上传的文件 |
(3)在“上传”按钮的Click事件中,设置文件需要保存的路径及名称并将文件保存。代码如下:
protected void btnSend_Click(object sender, EventArgs e)
{
try
{
string upName = fupFileSend.FileName; //获取上传文件的名称
string nameLast = upName.Substring(upName.LastIndexOf(".")); //获取上传文件的后缀名
string fileName = txtName.Text + nameLast; //修改上传文件的名称
string path = Server.MapPath("./")+"File"+ "\\" + fileName; //设置要保存的路径
fupFileSend.PostedFile.SaveAs(path); //将文件保存到指定路径下
RegisterStartupScript("true", "<script>alert('上传成功!')</script>");
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString( ));
RegisterStartupScript("true", "<script>alert('上传失败!')</script>");
}
}
在传送大文件之前,可以使用GZip在线压缩文件,或将文件分割为若干部分再进行传输。