Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法使用HttpPostedFile类获取上载进度?_C#_Asp.net Mvc_Ajax_Json_Callback - Fatal编程技术网

C# 有没有办法使用HttpPostedFile类获取上载进度?

C# 有没有办法使用HttpPostedFile类获取上载进度?,c#,asp.net-mvc,ajax,json,callback,C#,Asp.net Mvc,Ajax,Json,Callback,我想使用该类将一个或多个大文件从网页上载到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+

我想使用该类将一个或多个大文件从网页上载到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));
        }
    }
}
if(context.Request.Files.Count>0)
{
字符串tempFile=context.Request.PhysicalApplicationPath;
for(int i=0;i0)
{
uploadFile.SaveAs(string.Format(“{0}{1}{2}”),
tempFile,“Upload\\”,uploadFile.FileName));
}
}
}

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

不。Asp.net始终在使用HttpRequest.InputStream时加载整个请求内容


如果你想提供这样的反馈,你要么需要在客户端使用类似flash的东西,要么编写自己的http handle,直接转到HttpWorkerRequest方法自己加载实体体。

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

谢谢,我在这方面也遇到了一些问题,您知道编写自己的http处理程序的好教程吗?下面是另一个好例子