使用ftp协议下载大文件

磷酸钙

我知道这可能不是第一次,这是被问到的。但是我找不到解决问题的办法。

  private void bgftpdownload_DoWork(object sender, DoWorkEventArgs e)
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpurl + "/" + clientlabel.Text + "/data.7z");
        request.Credentials = new NetworkCredential(ftpuser, ftppass);
        request.Method = WebRequestMethods.Ftp.GetFileSize;
        request.Proxy = null;

        FtpWebResponse response = (FtpWebResponse)request.GetResponse();
        long fileSize = response.ContentLength;

        request = (FtpWebRequest)WebRequest.Create(ftpurl + "/" + clientlabel.Text + "/data.7z");
        request.Credentials = new NetworkCredential(ftpuser, ftppass);
        request.Method = WebRequestMethods.Ftp.DownloadFile;
        using (FtpWebResponse responseFileDownload = (FtpWebResponse)request.GetResponse())
        using (Stream responseStream = responseFileDownload.GetResponseStream())
        using (FileStream writeStream = new FileStream(LocationFile, FileMode.Create))
        {

            int Length = 2048;
            Byte[] buffer = new Byte[Length];
            int bytesRead = responseStream.Read(buffer, 0, Length);
            int bytes = 0;

            while (bytesRead > 0)
            {
                writeStream.Write(buffer, 0, bytesRead);
                bytesRead = responseStream.Read(buffer, 0, Length);
                bytes += bytesRead;
                int totalSize = (int)(fileSize / 1048576);
                bgftpdownload.ReportProgress((bytes / 1048576) * 100 / totalSize, totalSize);
            }
        }
    }
    private void bgftpdownload_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
            progresslabel.Text = e.ProgressPercentage * (int)e.UserState / 100 + " Mb / " + e.UserState + " Mb";
            progressBar1.Value = e.ProgressPercentage;
    }

我有这段代码,它的工作非常好..直到它在ftp服务器上命中了2 gb文件

我可以在其他论坛上阅读,(int)的值限制为= 2147483591,所以该问题已解决,原因是我的字节变得高于限制(2147483591)

System.Windows.Forms.dll中发生类型为'System.ArgumentOutOfRangeException'的异常,但未在用户代码中处理

附加信息:值“ -45”对于“值”无效。“值”必须介于“最小值”和“最大值”之间。

我该怎么做才能解决此问题?

磷酸钙

long bytes = 0;

bgftpdownload.ReportProgress((int)(bytes / 1048576) * 100 / totalSize, totalSize);
是解决办法,我置于(INT)在ReportProgress错了地方。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ftp_get()损坏的大文件下载

来自分类Dev

使用PowerShell下载大文件

来自分类Dev

Chilkat FTP2 下载 (GetFile) 大文件 (≈12 GB)

来自分类Dev

是否所有的Internet文件都使用FTP协议下载?

来自分类Dev

使用内存流下载大文件

来自分类Dev

使用HttpClient下载Web API大文件

来自分类Dev

如何使用wget下载大文件?

来自分类Dev

使用HttpClient下载Web API大文件

来自分类Dev

使用ftp下载文件

来自分类Dev

下载大文件

来自分类Dev

大文件下载cherrypy

来自分类Dev

下载大文件

来自分类Dev

大文件下载cherrypy

来自分类Dev

从HDFS下载大文件

来自分类Dev

下载文件使用什么协议?

来自分类Dev

如何使用FSharp.Data的http模块下载大文件?

来自分类Dev

使用python请求中断流式下载大文件

来自分类Dev

使用WebClient在Unity3d中下载大文件

来自分类Dev

使用多个并行线程分批下载大文件

来自分类Dev

如何使用Node.js从Dropbox下载大文件?

来自分类Dev

如何使用Angular的httpClient下载大文件(> 1GB)?

来自分类Dev

如何通过ftp在python中下载大文件(具有监视和重新连接)?

来自分类Dev

使用R从ftp下载文件

来自分类Dev

在Android上使用FTP下载文件

来自分类Dev

使用cURL从FTP下载文件

来自分类Dev

使用ruby sinatra从ftp下载CSV文件

来自分类Dev

php下载大文件失败

来自分类Dev

下载Dartlang中的大文件

来自分类Dev

symfony巨大文件下载