加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:36:30 所属栏目:asp.Net 来源:网络整理
导读:我的要求是从.net应用程序上传4GB文件并从.net application下载相同的文件.我们可以使用.net应用程序上传和下载4GB文件. 因此,要上传4GB文件,我们已经拆分了4GB文件,在下载时我们使用C#中的FileStream对象合并了该文件. 现在,当我从.net应用程序中单击“下载
我的要求是从.net应用程序上传4GB文件并从.net application下载相同的文件.我们可以使用.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",FileAccess.Write);
                        int data = 0;
                        byte[] buffer = new byte[eachSize];
                        if ((data = inFile.Read(buffer,eachSize)) > 0)
                        {
                            outFile.Write(buffer,data);
                        }
                        outFile.Close();
                    }

下载时我的代码

FileStream outFile = new FileStream("\" + clientIPAddress + "uploadoutput.zip",FileAccess.Write);
            for (int i = 0; i < 10; i++)
            {
                int data = 0;
                byte[] buffer = new byte[4096];
                FileStream inFile = new FileStream(strMediaPath + "" + i + ".zip",FileAccess.Read);
                while ((data = inFile.Read(buffer,4096)) > 0)
                {
                    outFile.Write(buffer,data);
                }
                inFile.Close();
            }
            outFile.Close();

谢谢
埃德温

解决方法

我没有看到首先拆分文件的重点,你所做的只是保证在传输结束时另一个慢速磁盘复制操作来连接文件.

不拆分文件将要求第一个代码块中的i是long而不是int.自签名以来,32位整数将以2GB的速度输出.

最后,你的缓冲区应该更大. 4k是我的第一台TRS-80计算机所拥有的,这是在循环中读取和写入的一小部分数据.尝试更实质的东西,比如1MB.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读