在mvc3网站上使用标准<input type="file" />
时,您可以通过创建HttpPostedFile
类型的输入参数并将表单设置为enctype="multipart/form-data"
来接收操作方法中的文件p>
这种方法的一个问题是请求没有完成,并且在文件的整个内容上传之前不会传递给您的操作方法。
我想在该文件上传到服务器时做一些事情。基本上我想异步接收数据,然后以编程方式逐字节处理数据。
为了实现上述目标,我想你可能需要在HttpModule或自定义HttpHandler中处理这部分请求。我熟悉这些东西是如何工作的,但我不熟悉接收文件上传数据的方法。
我知道这是可能的,因为我过去曾与第三方组件合作(通常这样他们可以报告上传进度,或者将数据缓存到磁盘以避免iis / asp.net内存限制)。不幸的是,我使用的所有组件都是封闭源代码,因此我无法窥视内部并看到它们正在做什么。
我不是在寻找代码,但是有人能让我指出正确的方向吗?
答案 0 :(得分:1)
使用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();
}
如果看起来像你想要的那样,请查看CodeProject File Transfer Progress。它详细介绍了我的代码基于。