我使用以下命令将压缩(.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)
{
-----
}
}
答案 0 :(得分:0)
除了这句话外,代码看起来还不错。
targetStream.Write(buffer,0,contentlength);
在这里,您需要检查“写入”实际写入的字节数。如果
写入的字节数小于countlength,那么你应该写
剩下的数据。我建议你为contentlength和
添加调试打印
Write函数实际写入的字节数。