Eri*_*ick 6 c# asp.net asynchronous file-upload
在<input type="file" />mvc3站点上使用标准时,您可以通过创建类型的输入参数HttpPostedFile 并将表单设置为,在操作方法中接收文件enctype="multipart/form-data"
这种方法的一个问题是请求没有完成,并且在上传文件的全部内容之前,请求不会传递给您的操作方法.
我想在该文件上传到服务器时做一些事情.基本上我想异步接收数据,然后以编程方式逐字节处理数据.
为了实现上述目标,我想你可能需要在HttpModule或自定义HttpHandler中处理这部分请求.我熟悉这些东西是如何工作的,但我不熟悉接收文件上传数据的方法.
我知道这是可能的,因为我过去曾与第三方组件合作(通常这样他们可以报告上传进度,或者将数据缓存到磁盘以避免iis/asp.net内存限制).不幸的是,我使用的所有组件都是封闭源代码,因此我无法窥视内部并看到它们正在做什么.
我不是在寻找代码,但有人可以让我指出正确的方向吗?
使用 WCF 服务,您可以将文件流发送到您的服务或从您的服务发送文件流。
这是我使用的服务端接收代码:
int chunkSize = 2048;
byte[] buffer = new byte[chunkSize];
using (System.IO.FileStream writeStream =
new System.IO.FileStream(file.FullName, System.IO.FileMode.CreateNew, System.IO.FileAccess.Write))
{
do
{
// read bytes from input stream
int bytesRead = request.FileByteStream.Read(buffer, 0, chunkSize);
if (bytesRead == 0) break;
// write bytes to output stream
writeStream.Write(buffer, 0, bytesRead);
} while (true);
writeStream.Close();
}
Run Code Online (Sandbox Code Playgroud)
如果这看起来像您想要的,请查看 CodeProject文件传输进度。它涉及到我的代码大致基于的许多细节。