【问题标题】:Is there a way to get upload progress using the HttpPostedFile class?有没有办法使用 HttpPostedFile 类获取上传进度?
【发布时间】:2010-11-12 09:19:11
【问题描述】:

我想使用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 定期向网页返回状态,以便显示进度条和完成百分比?代码会是什么样子?

【问题讨论】:

    标签: c# asp.net-mvc ajax json callback


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      不。 Asp.net 总是在您使用 HttpRequest.InputStream 时立即加载整个请求内容。

      如果你想提供这样的反馈,你要么需要在客户端使用类似 flash 的东西来做,要么编写你自己的 http 处理程序,它会直接进入 HttpWorkerRequest 方法来自己加载实体主体。

      【讨论】:

      • 谢谢我也遇到了一些问题,see my question,你知道任何关于编写我自己的 http 处理程序的好教程吗?
      • 这里还有一个不错的article
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      相关资源
      最近更新 更多