gpt4 book ai didi

asp.net - 从 .net 应用程序下载 4GB 文件

转载 作者:行者123 更新时间:2023-12-02 12:15:55 25 4
gpt4 key购买 nike

我的要求是从.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();

谢谢埃德温

最佳答案

我一开始就不明白分割文件的意义,您所做的只是保证在传输结束时进行另一次缓慢的磁盘复制操作以连接文件。

不拆分文件将要求第一个代码块中的 ilong 而不是 int。 32 位整数将在 2GB 处被抽出,因为它们是有符号的。

最后,你的缓冲区应该大很多。 4k 是我的第一台 TRS-80 计算机中的内容,这是要在循环内读写的微小数据 block 。尝试更大的容量,例如 1MB。

关于asp.net - 从 .net 应用程序下载 4GB 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679465/

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