重置连接并将最大请求长度提高到一定程度的原因可能有很多,但您对异步文件上传器的看法是正确的。最重要的部分是使用一个将文件“分块”成更小的部分,从而避免请求限制等。我在 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");
}