c# - 有没有办法使用 HttpPostedFile 类获取上传进度?

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

我想使用 HttpPostedFile用于将一个或多个大文件从网页上传到 ASP.NET MVC Controller 的类。使用此类,上传的大于 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 定期将状态返回到网页,以便显示进度条和完成百分比?代码会是什么样子?

最佳答案

没有。只要您使用 HttpRequest.InputStream,Asp.net 总是加载整个请求内容。

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

关于c# - 有没有办法使用 HttpPostedFile 类获取上传进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1154734/

相关文章:

c# - 如何从 NodaTime 中的偏移量获取所有 IANA 时区?

javascript - 向网格添加新行

c# - ASP.NET MVC 在 jquery DataTables 中显示 Enum 列的文本?

c# - 使用 .NET Core 的 DI 容器实例化对象

c# - 发送 Gmail 电子邮件

c# - 如何使正则表达式匹配整个单词或什么都不匹配

php - 向服务器发送答案,并从服务器返回相关数组以供下一个输入选项

jquery - pjax 是 "fluid"导航的方法吗?

ajax - 发送带有 Header 和 FormData 的 XMLHttpRequest

c# - SQL Server 序列间隙