在ASP.NET 2.0 中实现文件上载
发布时间:2006-04-13 23:36:53 来源:msdn 网友评论 0 条同时上载多个文件
目前为止,已经有几个不错的示例说明了如何不费周折地将文件上载到服务器。现在,让我们看看如何从一个页面将多个文件上载到服务器。
Microsoft .NET Framework 中没有任何内置功能使您可以从一个 ASP.NET 页上载多个文件。然而,只需要少量工作,您就可以像过去使用 .NET 1.x 那样完成此任务。
方法是将 System.IO 类导入到 ASP.NET 页中,然后使用 HttpFileCollection 类捕获通过 Request 对象发送来的所有文件。该方法使您可以从一个页面上载所需数量的文件。
如果需要,您完全可以分别处理该页上的每个 FileUpload 控件,如清单 5 所示。
清单 5. 分别处理每个 FileUpload 控件
Visual BasicIf FileUpload1.HasFile Then ' Handle file End If If FileUpload2.HasFile Then ' Handle file End If C# if (FileUpload1.HasFile) { // Handle file } if (FileUpload2.HasFile) { // Handle file } |
该方法有效,但可能存在这种情况:您要使用 HttpFileCollection 类处理文件,特别是在处理动态生成的服务器控件列表时。
针对这种情况的示例,您可以生成一个 ASP.NET 页,该页有三个 FileUpload 控件和一个 Submit 按钮(使用 Button 控件)。用户单击 Submit 按钮并且文件被发布到服务器之后,隐藏的代码将文件保存到服务器上的特定位置。保存文件后,在 ASP.NET 页上显示已发布的文件信息(请参见清单 6)。
清单 6. 将多个文件上载到服务器
Visual Basic Protected Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Dim filepath As String = "C:/Uploads" Dim uploadedFiles As HttpFileCollection = Request.Files Dim i As Integer = 0 Do Until i = uploadedFiles.Count Dim userPostedFile As HttpPostedFile = uploadedFiles(i) Try If (userPostedFile.ContentLength > 0) Then Label1.Text += "File #" & (i + 1) & "" Label1.Text += "File Content Type: " & _ userPostedFile.ContentType & "" Label1.Text += "File Size: " & _ userPostedFile.ContentLength & "kb" Label1.Text += "File Name: " & _ userPostedFile.FileName & "" userPostedFile.SaveAs(filepath & "/" & _ System.IO.Path.GetFileName(userPostedFile.FileName)) Label1.Text += "Location where saved: " & _ filepath & "/" & _ System.IO.Path.GetFileName(userPostedFile.FileName) & _ " " End If Catch ex As Exception Label1.Text += "Error:" & ex.Message End Try i += 1 Loop End SubC# protected void Button1_Click(object sender, EventArgs e) { string filepath = "C://Uploads"; HttpFileCollection uploadedFiles = Request.Files; for (int i = 0; i < uploadedFiles.Count; i++) { HttpPostedFile userPostedFile = uploadedFiles[i]; try { if (userPostedFile.ContentLength > 0 ) { Label1.Text += "File #" + (i+1) + ""; Label1.Text += "File Content Type: " + userPostedFile.ContentType + ""; Label1.Text += "File Size: " + userPostedFile.ContentLength + "kb"; Label1.Text += "File Name: " + userPostedFile.FileName + ""; userPostedFile.SaveAs(filepath + "//" + System.IO.Path.GetFileName(userPostedFile.FileName)); Label1.Text += "Location where saved: " + filepath + "//" + System.IO.Path.GetFileName(userPostedFile.FileName) + " "; } } catch (Exception Ex) { Label1.Text += "Error: " + Ex.Message; } } } |
最终用户最多可以选择四个文件,然后单击 Upload Files 按钮,该按钮会初始化 Button1_Click 事件。使用 HttpFileCollection 类和 Request.Files 属性使您可以控制从该页上载的所有文件。当这些文件处于此状态时,您可以对它们进行任何操作。在本例中,检查文件的属性并将它们输出到屏幕上。最后,这些文件保存到服务器根目录的 Uploads 文件夹中。该操作的结果如图 5 所示。

图 5. 一次将一个 ASP.NET 页上的四个文件上载到服务器
您可能已经注意到,该示例有趣的一点是,文件输入文本框的状态没有通过回发进行保存。在图 5 中您可以看到这一点。在 ASP.NET 中,无法保存文件输入文本框的状态,因为这么做可能会引发安全风险。
小结
ASP.NET 提供的 FileUpload 服务器控件是一个强大的控件,在 Active Server Pages 3.0 时代实现该控件非常困难。这个新增的功能允许最终用户将一个或多个文件上载到服务器。请记住,通过利用 web.config.comments 或 web.config 文件中的设置,您可以控制文件的大小。
- 推荐阅讯
- ASP.NET 2.0轻松实现数据库应用开发
- 10天学会ASP.net之第八天
- ASP.NET 2.0页面框架简要慨述
- ASP.NET2.0服务器控件之自定义状态管理
- ASP.NET中动态控制RDLC报表
- 10天学会ASP.net之第七天
- 剖析ASP.NET2.0站点导航功能之建立导航
- ASP.NET入门随想之服务器控件模型
- ASP.NET2.0服务器控件开发之实现事件
- ASP.NET技巧:HTTP性能调优之设置连接失效时
- 阅读排行
- 1.用ASP.NET 2.0设计网络在线投票系统
- 2.在ASP.Net 2.0中实现多语言界面的方法
- 3.轻松加密ASP.NET 2.0 Web程序配置信息
- 4.在ASP.NET中使用AJAX的简单方法
- 5..NET 2.0中的企业库异常处理块简述
- 6.面向.NET开发人员的Ajax 技术平台策略
- 7.揭开ASP.NET中Cookie编程的奥秘
- 8.ASP.NET2.0服务器控件之创建自定义控件
- 9.ASP.NET2.0中Gridview中数据操作技巧
- 10.ASP.NET 2.0发送电子邮件全面剖析之二
- 专题教程
- Windows Server-Windows Server文档-Windows Server新闻-Windows Ser PostgreSQL-PostgreSQL文档-PostgreSQL新闻-PostgreSQL专家
- WebLogic-WebLogic文档-WebLogic新闻-WebLogic专家 FreeBSD-FreeBSD文档-FreeBSD新闻-FreeBSD专家
- Linux-内核 GUI KDE Gnome DNS FTP 安全 安装-Linux专区 Windows-AD IIS ServerCore 虚拟化 安全 HPC-Windows专区
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
