asp.net fileupload控制大文件超时

时间:2012-06-21 07:59:45

标签: asp.net file-upload web-config

通过asp.net fileupload控件上传一个相当大的文件(90 MB)或多或少2分钟后获取ERR_CONNECTION_RESET

在共享主机环境中对此进行测试,因此我不确切地知道对我执行了哪些策略。

我认为

web.config设置就足够了:

 <httpRuntime requestValidationMode="2.0" maxRequestLength="1000000" executionTimeout="45000" />

我应该查看其他异步文件上传控件吗?我错过了web.config设置吗?对于慢速连接上的大文件,上传控制是否不够?

1 个答案:

答案 0 :(得分:1)

为什么重置连接并将最大请求长度提升到一定程度可能有很多原因,但您正在寻找异步文件上传器。最重要的部分是使用一个“文件”将文件“块”成小块,从而避免请求限制等。我有最好的plupload经验:

http://www.plupload.com/

以下是一些用于接收文件的代码(这是MVC,但您可以重构在.NET经典中使用处理程序):

       [HttpPost]            
        public ActionResult UploadImage(int? chunk, int? chunks, string name)
        {
            var fileData = Request.Files[0];

            if (fileData != null && fileData.ContentLength > 0)
            {
                var path = GetTempImagePath(name);
                fileSystem.EnsureDirectoryExistsForFile(path);

                // Create or append the current chunk of file.
                using (var fs = new FileStream(path, chunk == 0 ? FileMode.Create : FileMode.Append))
                {
                    var buffer = new byte[fileData.InputStream.Length];
                    fileData.InputStream.Read(buffer, 0, buffer.Length);
                    fs.Write(buffer, 0, buffer.Length);
                }
            }

            return Content("Chunk uploaded", "text/plain");
        }