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

时间:2015-10-29 06:22:56

标签: c# ftp

我使用以下命令将压缩(.zip)文件传输到测试FTP服务器。这至少适用于小文件。 但是在手动尝试一个大文件(也就是使用工具)后,我看到真正的目标FTP存在问题,因为这些文件总是被破坏(因此它们不能被提取出来)。

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

请注意:我测试下面代码的小文件大小只有1-3 MB,而我需要传输的大文件大小只有110-200 MB。

要添加的一件事是,我不确定字节"跌倒"在传输期间,也称为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)
            {
                -----
            }
        }

1 个答案:

答案 0 :(得分:0)

除了这句话外,代码看起来还不错。

targetStream.Write(buffer,0,contentlength);

在这里,您需要检查“写入”实际写入的字节数。如果  写入的字节数小于countlength,那么你应该写  剩下的数据。我建议你为contentlength和
添加调试打印  Write函数实际写入的字节数。