查看在 .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 限制,还是有办法从流中逐步写入文件?