加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用ASP.NET MVC 2上传文件的最佳方法是什么?

发布时间:2020-12-16 03:47:19 所属栏目:asp.Net 来源:网络整理
导读:上传可变大小文件(非常大或非常小的ASP.NET MVC 2应用程序文件系统)的最佳方法是什么? 这是我到目前为止所理解的: 人们似乎有两种方式来处理这个问题. (我们假设文件可能非常大或非常小) (1)通过Request.Files或HttpPostedFileBase处理控制器动作中的上传,
上传可变大小文件(非常大或非常小的ASP.NET MVC 2应用程序文件系统)的最佳方法是什么?

这是我到目前为止所理解的:

人们似乎有两种方式来处理这个问题. (我们假设文件可能非常大或非常小)

(1)通过Request.Files或HttpPostedFileBase处理控制器动作中的上传,由于ASP.NET将文件加载到活动内存中,这似乎有很长一段时间的缺点.

要么

(2)使用HttpModule尽早拦截文件上传,HttpModule以某种方式规避了性能问题. (关于它是如何工作的,我有点多云,但我一直在使用这篇文章http://darrenjohnstone.net/2008/07/15/aspnet-file-upload-module-version-2-beta-1/作为参考).我模糊的部分是在什么时候ASP.NET将提交的文件加载到活动内存,以及如何在模块中拦截它实际上改变了这种行为.

由于第二个选项更快,它似乎是更好的选择.但似乎提交上传表单的应用程序可能会有一些与需要保存在数据库中的文件相关联的数据.我不想在我的HttpHandler或HttpModule中进行持久性调用,(因为那时我将在不同的地方发生两个非常相似的功能:控制器和http处理程序).

我想一个解决方法是将目标文件位置存储在HttpContext.Items中,但这是最好的方法吗?

关于这一点的最后一个问题是我想在文件上传完成之前呈现HttpResponse.因此,如果有一个大文件,我将向用户发送一个包含上传状态值的视图,并进行AJAX调用以保持状态更新.如何在保持上传过程的同时呈现结果?我需要制作AsyncHandler或AsyncController吗?我需要手动抓取另一个线程吗?

非常感谢你们.我知道这是很多问题,可能反映了对某些事情的普遍缺乏理解.普遍缺乏理解的有趣之处在于,拥有它们的人也往往缺乏对缺乏理解的理解……所以,如果有人能指出我在正确的方向上,我会很感激.

解决方法

如果我从ASP.NET 2.0中正确记得大文件被刷新到磁盘,那么即使使用HttpPostedFileBase也不应该有任何内存/性能问题.我不确定asynccontrollers是否是这里的解决方案,asynccontrollers用于长时间运行的服务器进程.有关AsyncControllers的示例,请参阅 http://www.aaronstannard.com/post/2011/01/06/asynchonrous-controllers-ASPNET-mvc.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读