用FtpWebRequest向公网FtpServer上上传文件,上传完成后,文件大小比本地文件小本地操作系统XP,服务器2003,FtpServer FileZilla上传部分代码:
ftp.UseBinary = true;int BufferSize = 1024;
byte[] buffer = new byte[BufferSize];
int readBytes;while循环{
readBytes = stream.Read(buffer, 0, BufferSize);
rs.Write(buffer, 0, readBytes);
rs.Flush();
}上传文件大部分正常,有一小部分文件比原始文件小1K到10几K不等。测试用文件大小649KB(665,107字节)占用空间652KB(667,648字节)
上传后错误文件
1.大小649KB(664,576字节)占用空间652KB(667,648字节)
2.大小648KB(663,552字节)占用空间648KB(663,552字节)
3.大小647KB(662,528字节)占用空间648KB(663,552字节)
还有646KB,645KB和644KB的情况
上传1个多G的大文件有时候也会少几K,比较后发现都是文件尾有部分差异,少东西。上传的都是视频文件(wmv格式),错误文件也不影响正常播放。请高手,求解
ftp.UseBinary = true;int BufferSize = 1024;
byte[] buffer = new byte[BufferSize];
int readBytes;while循环{
readBytes = stream.Read(buffer, 0, BufferSize);
rs.Write(buffer, 0, readBytes);
rs.Flush();
}上传文件大部分正常,有一小部分文件比原始文件小1K到10几K不等。测试用文件大小649KB(665,107字节)占用空间652KB(667,648字节)
上传后错误文件
1.大小649KB(664,576字节)占用空间652KB(667,648字节)
2.大小648KB(663,552字节)占用空间648KB(663,552字节)
3.大小647KB(662,528字节)占用空间648KB(663,552字节)
还有646KB,645KB和644KB的情况
上传1个多G的大文件有时候也会少几K,比较后发现都是文件尾有部分差异,少东西。上传的都是视频文件(wmv格式),错误文件也不影响正常播放。请高手,求解
readBytes = stream.Read(buffer, 0, BufferSize);
rs.Write(buffer, 0, readBytes);
rs.Flush();
}
看看你循环的结束条件,应该是提前结束循环,导致少了一些数据。
Stream rs = ftp.GetRequestStream();
stream.Seek(offset, SeekOrigin.Begin);
do
{
if (isAbort)
{
try
{
rs.Close();
stream.Close();
ftp = null;
}
catch
{
}
return false;
}
readBytes = stream.Read(buffer, 0, BufferSize);
rs.Write(buffer, 0, readBytes);
rs.Flush();
}
while (readBytes != 0);大部分时候能完整上传,对比了一下所有有问题的文件,基本都是少了最后一个或几个包。
FtpServer的Log里面也没有发现异常,都是正常结束