如何在 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)中进行文件上传的主要内容,如果未能解决你的问题,请参考以下文章

如何在 c# asp.net 中使用完整的日历

在 ASP.NET C# Web 应用程序中使用 ADO.NET 和 XML

如何在asp.net c#的web配置文件中设置起始页

如何在 Asp.net C# 中调用 webmethod

如何使用 ASP.NET C# 在使用 ajax 完成 Web 服务时生成警报

asp.net(c#)如何上传大文件?