有没有办法使用HttpPostedFile类获得上传进度?

我想使用HttpPostedFile类从网页上传一个或多个大文件到ASP.NET MVC控制器。 使用此类,上载的大于256 KB的文件将缓冲到磁盘,而不是保存在服务器内存中。

我的理解是它可以这样做:

if (context.Request.Files.Count > 0) { string tempFile = context.Request.PhysicalApplicationPath; for(int i = 0; i  0) { uploadFile.SaveAs(string.Format("{0}{1}{2}", tempFile,"Upload\\", uploadFile.FileName)); } } } 

有没有办法设置回调或使用其他方法,通过AJAX或JSON定期返回状态到网页,以便显示进度条和完成百分比? 代码会是什么样的?

不。 只要您使用HttpRequest.InputStream,Asp.net就会始终加载整个请求内容。

如果你想提供这样的反馈,你需要在客户端使用flash之类的东西来做,或者编写你自己的http hanlder,直接使用HttpWorkerRequest方法自己加载实体。

我倾向于同意serialseb。 您需要编写自己的http处理程序,这可能会将上传进度输出到某个事件,可能会有一个特定的操作来查询此类进度’,允许客户端定期查询更新。