在.NET中上传文件的不同方法,例如HttpPostedFile和使用HttpHandler,我正在尝试更详细地了解该过程的工作原理。
具体来说,它如何将信息写入文件中。
假设我有以下内容:
HttpPostedFile file = context.Request.Files[0];
file.SaveAs("c:\temp\file.zip");
实际文件直到完整流程被处理之后才会创建。
同样地:
using (Stream output = File.OpenWrite("c:\temp\file.zip"))
using (Stream input = file.InputStream)
{
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
}
我本以为这个操作会在读取流的同时“逐渐”写入文件。但是查看文件系统,它似乎并没有这样做。如果我在 while 循环内设置断点,则会执行该操作。
我的目标是实现上传文件(使用 JavaScript 上传工具)的同时进行轮询,每秒钟轮询一次 ajax 请求以尝试获取已上传文件的文件信息(文件大小)。然而,在上传完成之前,它始终返回 0。
Vimeo 似乎能够在 IE 上实现此类功能?是 .NET 的限制,还是有一种方法可以从流中逐步写入文件?