我能做些什么来增加通过FTP正确传输文件的机会吗

本文关键字:传输 文件 机会 FTP 做些什么 增加 | 更新日期: 2023-09-27 18:19:47

我正在使用下面的命令将压缩(.zip)文件传输到测试FTP服务器。这至少适用于小文件。但在手动尝试了一个大文件(也就是用工具)后,我发现真正的目标FTP存在问题,因为这些文件总是被损坏(因此无法再提取)。

由于我需要传输的数据至关重要,我的问题是:我能做些什么来增加我正在传输的文件正确传输(又称未损坏)的机会吗?

这里需要注意的是:我测试下面代码的小文件大小只有1-3MB,而我很快需要传输的大文件大小为110-200MB

还有一点需要补充的是,我不确定在传输过程中字节"下降"(即0变为1)的可能性有多大,反之亦然。因此,使这种可能性降低的事情也将是寻找的要点之一。如果可能的话

        FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(String.Format("{0}/{1}", ftpUrl, ftpFileName));
        ftpRequest.UsePassive = false;
        ftpRequest.UseBinary = true;
        ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
        ftpRequest.Credentials = ftpCredentials;
        int bufferLength = 2048;
        byte[] buffer = new byte[bufferLength];
        int contentlength;
        using (FileStream originalStream = (new FileInfo(compressedFile)).OpenRead())
        {
            try
            {
                using (Stream targetStream = ftpRequest.GetRequestStream())
                {
                    contentlength = originalStream.Read(buffer, 0, bufferLength);
                    while (contentlength != 0)
                    {
                        targetStream.Write(buffer, 0, contentlength);
                        contentlength = originalStream.Read(buffer, 0, bufferLength);
                    }
                }
            }
            catch (Exception ex)
            {
                -----
            }
        }

我能做些什么来增加通过FTP正确传输文件的机会吗

除了这句话,代码对我来说还可以。

targetStream.Write(缓冲区,0,内容长度)

在这里,您需要检查"实际写入了多少字节;写";。如果写入的字节数小于countlength,则应写入剩余数据。我建议您为contentlength和
添加调试打印Write函数实际写入的字节数。