使用 MVC 3/.NET 进行异步文件上传?

Posted

技术标签:

【中文标题】使用 MVC 3/.NET 进行异步文件上传?【英文标题】:Asynchronous file uploader with MVC3/.NET? 【发布时间】:2011-12-08 17:01:05 【问题描述】:

我是一名学生,并且是 .NET 尤其是 MVC3 开发的新手。

目前在我的一个项目部分中,有一个包含少量文本字段和两个文件输入的表单。

考虑到上传的文件可能很大,我想使用一个异步文件上传器,它可以显示文件上传的进度,这样用户在上传文件时不会觉得挂机和卡住在后面,我想让用户参与并了解文件上传进度。我搜索了几个可能的选项,例如 uploadify,但在使用它们时没有发现太多成功。

我想知道是否有任何有用的 .net/MVC 插件可用于异步上传这些文件?

最好有一些选项,例如文件扩展名/大小检查。

谢谢!

【问题讨论】:

查看此帖kiwidev.wordpress.com/2011/01/18/… @Maven 您在上传时遇到了什么问题? @Ufuk Hacıoğulları 每当我尝试上传文件时,它只会给我一个“HTTP 错误”错误消息。努力了才发现bt没有成功! 您是否更改了 web.config 中的请求大小?它的默认值为 4MB。 @Maven 你用的是什么版本的uploadify?我目前正在使用它,没有任何问题。在您的网站上进行设置时,您是否完全按照他们的示例进行设置? 【参考方案1】:

从技术上讲,带有一些进度指示器的多重上传不是服务器端功能,因此您无法使用“MVC 插件”来执行此操作。您必须实现一些客户端解决方案,通常基于 Flash、Silverlight、html5 等——其中有很多。在服务器端,您必须像往常一样接收该文件(或者如果它以“拆分”模式发送,则从“块”合并它 - 请参阅有关此的教程)。

所以更像是“MVC 插件”,一般情况下您需要搜索“Jquery 插件”或“multiupload”。

例如,看这里:http://superdit.com/2010/06/29/10-jquery-ajax-file-uploader-plugins/

【讨论】:

【参考方案2】:

Uploadify 确实是一个不错的选择,在我看来,如果你不介意闪光灯的话。我的公司现在正在我们的一个网站上使用它,而且效果很好。几乎没有其他选项可以实际限制用户可以选择的文件类型。希望很快会有一些好的 HTML5 上传器可以处理这个问题,但据我所知,目前还没有。不过,我很想被证明是错误的。此外,即使有合适的 HTML5 上传器,如果您的网站的用户使用不支持 HTML5 的浏览器,您也可能无法使用它们。

更新:您还可以限制文件大小,并使用CTRL +单击要上传的所有文件一次上传多个文件。

更新:关于“HTTP 错误”,我已经考虑了一段时间。我唯一一次遇到这样的错误是在用户未通过身份验证的情况下。例如,他们没有登录就直接进入页面。这在您的网站上应该是不可能的,但是在最初在页面上使用上传器进行测试时,我们并没有强制用户进行身份验证,并且出现了这个错误。一旦我们强制用户在查看页面之前进行身份验证(登录),这个错误就解决了。

【讨论】:

关于uploadify 的一些注意事项......它优雅地降级为纯HTML。在 HTML 5 广泛使用之前,flash 是允许多文件选择(而不是多文件上传)的唯一现实方法之一。关于 HTTP 错误 - uploadify 可能是挑剔的,HTTP 错误是默认的回退错误。还有一个众所周知的 flash cookie 错误 (swfupload.org/forum/generaldiscussion/383),它可能会突然出现,但不是特定于 uploadify。但是,如果您有要检查的特定错误情况,所有代码都是可用的并且可以轻松修改。【参考方案3】:

This jQuery 上传器看起来非常好,也应该使用任何版本的 asp.net mvc 进行锻炼

【讨论】:

以上是关于使用 MVC 3/.NET 进行异步文件上传?的主要内容,如果未能解决你的问题,请参考以下文章

关于MVC Ajax.BeginForm()异步上传文件的问题

文件上传之——用SWF插件实现文件异步上传

asp.net mvc  Ajax.BeginForm 异步上传图片的问题

mvc 无法上传大文件 提示超过长度

在 MVC 中使用 Knockout 进行文件上传

mvc视图中怎么上传图片并显示