【发布时间】:2012-03-14 14:25:40
【问题描述】:
我的要求是从 .net 应用程序上传 4GB 文件并从 .net 应用程序下载相同的文件。我们能够使用 .net 应用程序上传和下载 4GB 文件。
所以要上传 4GB 文件,我们拆分了 4GB 文件,下载时我们使用 C# 中的 FileStream 对象合并文件。
现在,当我从我的 .net 应用程序中单击“下载”按钮时,我可以将文件保存在客户端计算机中。但是在保存文件流对象时,会写入字节字节并将文件保存到用户的计算机。这需要更多时间将文件保存到客户端机器。即使是 100MB 的文件也需要节省大约 2 小时。所以如果我保存 4GB 则需要很长时间。
提高速度的最佳方法是什么? 是否有可用的 Filestream 对象? 请帮助我使用 .net 应用程序从 Networkshare 下载 4GB 文件。 如果您还找到任何其他解决方案来上传和下载 .net 中的 4gb 文件,那就太好了。
我无法使用 asp .net 下载代码下载 4GB 文件。所以我们采用了拆分方法。 请帮助我提高以下代码的速度。我正在使用 Asp .net 3.5 应用程序。
上传时我的代码:
FileStream foption = new FileStream(strFileName, FileMode.Open);
len = foption.Length;
eachSize = (int)Math.Ceiling((double)len / x);
foption.Close();
FileStream inFile = new FileStream(strFileName, FileMode.OpenOrCreate, FileAccess.Read);
for (int i = 0; i < x; i++)
{
FileStream outFile = new FileStream(strDir + "\\" + i + ".zip", FileMode.OpenOrCreate, FileAccess.Write);
int data = 0;
byte[] buffer = new byte[eachSize];
if ((data = inFile.Read(buffer, 0, eachSize)) > 0)
{
outFile.Write(buffer, 0, data);
}
outFile.Close();
}
下载时我的代码
FileStream outFile = new FileStream("\\\\" + clientIPAddress + "\\upload\\output.zip", FileMode.OpenOrCreate, FileAccess.Write);
for (int i = 0; i < 10; i++)
{
int data = 0;
byte[] buffer = new byte[4096];
FileStream inFile = new FileStream(strMediaPath + "\\" + i + ".zip", FileMode.OpenOrCreate, FileAccess.Read);
while ((data = inFile.Read(buffer, 0, 4096)) > 0)
{
outFile.Write(buffer, 0, data);
}
inFile.Close();
}
outFile.Close();
谢谢 埃德温
【问题讨论】:
标签: asp.net