Asp.Net高级文件上传

本文关键字:文件 高级 Net Asp | 更新日期: 2023-09-27 18:20:07

在mvc3站点上使用标准<input type="file" />时,您可以通过创建类型为HttpPostedFile的输入参数并将表单设置为enctype="multipart/form-data" 来在操作方法中接收文件

这种方法的一个问题是,请求没有完成,并且在上传文件的全部内容之前不会移交给您的操作方法。

我想对该文件做一些事情,因为它正在上传到服务器。基本上,我想异步地接收数据,然后通过编程逐字节地处理数据。

为了完成上述任务,我想您可能需要在HttpModule或自定义HttpHandler中处理这部分请求。我熟悉这些东西是如何工作的,但我不熟悉异步接收文件上传数据的方法。

我知道这是可能的,因为我过去曾与第三方组件合作过(通常情况下,他们可以报告上传进度,或将数据缓存到磁盘以避免iis/asp.net内存限制)。不幸的是,我使用的所有组件都是封闭源代码的,所以我无法窥探内部并查看它们在做什么。

我不是在寻找代码,但有人能在这里为我指明正确的方向吗?

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();
}

如果这看起来像您想要的,请查看CodeProject文件传输进度。它详细介绍了我的代码松散地基于的许多细节。