通过c#thread上传大文件

时间:2013-11-06 18:49:14

标签: c# file-upload

我有一个函数uploadfile(),在这个函数中我以块的形式上传文件:

Stream writer = request.GetRequestStream();
byte[] bufferUploadSize = new byte[4096];//ex.
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
int bytesRead = 0;
while ((bytesRead = fileStream.Read(bufferUploadSize,0, bufferUploadSize.Length)) != 0)
{
    writer.Write(bufferUploadSize, 0, bytesRead);
}
fileStream.Close();

我做到了没有错误,但当我在Windows任务管理器中观看我的程序时,我意识到我的程序使用的内存增加,直到文件大小。例如,当我上传1GB文件时,内存会逐渐增加,直到1GB。为什么呢?

我可以更改代码使用,例如,40KB而不是1GB RAM吗?

1 个答案:

答案 0 :(得分:3)

尝试设置request.AllowWriteStreamBuffering = false;

以下是MSDN文档:HttpWebRequest.AllowWriteStreamBuffering Property

这是该页面的注释:

  

将AllowWriteStreamBuffering设置为true可能会导致性能下降   上传大型数据集时出现问题,因为数据缓冲区可以   使用所有可用内存。