我想使用HttpPostedFile类将一个或多个大文件从网页上传到ASP.NET MVC控制器。使用此类,上载的大于256 KB的文件将缓冲到磁盘,而不是保存在服务器内存中。
我的理解是它可以这样做:
if (context.Request.Files.Count > 0)
{
string tempFile = context.Request.PhysicalApplicationPath;
for(int i = 0; i < context.Request.Files.Count; i++)
{
HttpPostedFile uploadFile = context.Request.Files[i];
if (uploadFile.ContentLength > 0)
{
uploadFile.SaveAs(string.Format("{0}{1}{2}",
tempFile,"Upload\\", uploadFile.FileName));
}
}
}
有没有办法设置回调或使用其他方法,通过AJAX或JSON定期将状态返回到网页,以便显示进度条和完成百分比?代码会是什么样的?
答案 0 :(得分:4)
不。只要您使用HttpRequest.InputStream,Asp.net就会一直加载整个请求内容。
如果你想提供这样的反馈,你需要在客户端使用flash之类的东西来做,或者编写你自己的http hanlder,直接用HttpWorkerRequest方法自己加载实体。< / p>
答案 1 :(得分:0)
我倾向于同意serialseb。您需要编写自己的http处理程序,这可能会将上传进度输出到某个事件,可能会有一个特定的操作来查询此类进度',允许客户端定期查询更新。