使用System.Net.FtpClient下载的文件大小与源文件大小不同

本文关键字:文件大小 System Net FtpClient 下载 使用 | 更新日期: 2023-09-27 18:13:49

使用System.Net.FtpClient(这是一个库,而不是一个本地。net组件)

我正在尝试下载文件到本地硬盘驱动器(在开发环境中,FTP服务器和目标本地文件夹都在同一物理驱动器上,但路径不同)。

我有这个代码。

using (Stream inputStream = ftpClient.OpenRead(item.FullName, FtpDataType.Binary, 15))
using (FileStream fileStream = File.Create(localFilePath))
{
    try
    {
        //inputStream.Seek(0, SeekOrigin.Begin);
        inputStream.CopyTo(fileStream);
    }
    catch (Exception ex)
    {
    }
}

问题:下载的文件与原始文件大小不相同。

请注意,我已经尝试了示例行//inputStream.Seek(0, SeekOrigin.Begin);注释,因为它抛出异常

"由于对象的当前状态,操作无效。"

我没有找到解决办法。也许这就是问题的一部分。

使用System.Net.FtpClient下载的文件大小与源文件大小不同

将重启位置设置为15 (OpenRead方法的第三个参数)。

所以响应显然缺少远程文件的前15个字节。


关于你关于.Seek的其他问题:

这与问题无关。FtpDataStream(由.OpenRead返回)不实现.Seek方法:

public override long Seek(long offset, SeekOrigin origin) {
    throw new InvalidOperationException();
}