【问题标题】:File downloaded using System.Net.FtpClient has different size than the source file使用 System.Net.FtpClient 下载的文件与源文件的大小不同
【发布时间】:2015-12-18 00:21:00
【问题描述】:

使用 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); 进行注释,因为它引发了异常

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

我没有找到解决方案。也许这是问题的一部分。

【问题讨论】:

    标签: c# download ftp ftp-client filezilla


    【解决方案1】:

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

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


    关于.Seek的其他问题:

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

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

    【讨论】:

    • 谢谢。所以我只是删除了“15”,它看起来很好。
    猜你喜欢
    • 2014-12-03
    • 2017-02-01
    • 2015-02-18
    • 2019-08-04
    • 1970-01-01
    • 2015-02-02
    • 2014-11-14
    • 2019-01-20
    • 1970-01-01
    相关资源
    最近更新 更多