gpt4 book ai didi

c# - Asp.Net 高级文件上传

转载 作者:太空狗 更新时间:2023-10-29 21:59:07 24 4
gpt4 key购买 nike

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

这种方法的一个问题是,在文件的全部内容都已上传之前,请求不会完成,也不会传递给您的操作方法。

我想在文件上传到服务器时对该文件做一些处理。基本上我想在数据传入时异步接收数据,然后以编程方式逐字节处理数据。

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

我知道这是可能的,因为我过去曾使用过执行此操作的第 3 方组件(通常它们可以报告上传进度,或将数据缓存到磁盘以避免 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();
}

如果这看起来像您想要的,请查看 CodeProject File Transfer Progress .它详细介绍了我的代码大致基于的很多细节。

关于c# - Asp.Net 高级文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8812023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com