如何在 Web 应用程序(ASP.Net、C#、IIS)中进行文件上传
Posted
技术标签:
【中文标题】如何在 Web 应用程序(ASP.Net、C#、IIS)中进行文件上传【英文标题】:How to go about a file upload in a Web Application (ASP.Net, C#, IIS) 【发布时间】:2009-10-30 20:44:39 【问题描述】:要求:
-
在我们的 Web 应用程序的网页上,我们需要上传文件。该文件最有可能是 pdf(pdf 文件的表单字段由用户填写),或用户扫描表单的压缩格式的扫描 jpeg/tiff/gif 文件。
文件大小可能为 3-7Mb。
该文件将作为 BLOD 存储在 Oracle 数据库中
系统信息:
-
Windows Server 2003
IIS 6.0
带有 Ajax 控制工具包的 ASP.Net/C# 3.5
问题:
-
是否有现成的 AJAX 控件来处理这种类型的文件上传。首选 AJAX 控件,但非 AJAX 也可以。
是否有任何 .Net 组件可用于检查文件有效性。我们的支票将主要针对pdf。或者,我们可能希望允许 jpeg/tiff/gif/png - 任何组件来检查这些文件类型?
从安全角度来看,是否有任何防病毒组件可以从 .Net 代码中调用来检查文件是否有病毒?
任何从事类似功能的人都可以分享他们的经验吗?
提前致谢
-莫伊兹
【问题讨论】:
【参考方案1】:1) 看看http://www.uploadify.com/
2) 上述组件有文件大小/扩展测试
3) 您应该在您的网络服务器上安装防病毒软件。
【讨论】:
【参考方案2】:http://swfupload.org/ 是一个基于 Flash 的异步文件上传组件,非常容易实现和与 ASP.Net 集成(因为上传的文件来自 Request.Files[] 集合)。
它还提供客户端文件大小和扩展测试。您仍然希望在服务器上验证文件扩展名等,因为验证是处理 javascript 属性并且可能会被绕过(还没有看到任何无法绕过的与 JavaScript 相关的上传工具)。
一些防病毒供应商提供 API 来扫描内存或特定文件;但是,我已经看到很多地方将文件放到一个目录中,该目录使用这种类型的扫描而不是通过 api 进行持续监控和处理。
【讨论】:
【参考方案3】:看看http://ajaxuploader.com/ 还可以考虑 Silverlight 解决方案,例如 http://www.codeplex.com/SilverlightFileUpld 基于 Flash 的上传器(如 YUI2 Uploader,http://developer.yahoo.com/yui/uploader/)与 Silverlight 相比存在一些限制,因为 Flash 的最新版本提高了安全性。例如,您不能从客户端 JavaScript 弹出文件选择对话框。
【讨论】:
【参考方案4】:ASP.Net AJAX 工具包现在有一个Async File Upload control
这个控件是在我们已经在生产中实现我们的需求之后发布的(没有异步文件上传)。
【讨论】:
以上是关于如何在 Web 应用程序(ASP.Net、C#、IIS)中进行文件上传的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP.NET C# Web 应用程序中使用 ADO.NET 和 XML