使用 System.Net.FtpClient 下载的文件与源文件大小不同
File downloaded using System.Net.FtpClient has different size than the source file
使用 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);
进行评论,因为它引发了异常
"Operation is not valid due to the current state of the object."
而且我没有找到解决方案。也许这是问题的一部分。
您将重启位置设置为 15(OpenRead
方法的第三个参数)。
所以响应显然缺少远程文件的前 15 个字节。
关于 .Seek
的其他问题:
与问题无关。 FtpDataStream
(由.OpenRead
返回)没有实现.Seek
方法:
public override long Seek(long offset, SeekOrigin origin) {
throw new InvalidOperationException();
}
使用 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);
进行评论,因为它引发了异常
"Operation is not valid due to the current state of the object."
而且我没有找到解决方案。也许这是问题的一部分。
您将重启位置设置为 15(OpenRead
方法的第三个参数)。
所以响应显然缺少远程文件的前 15 个字节。
关于 .Seek
的其他问题:
与问题无关。 FtpDataStream
(由.OpenRead
返回)没有实现.Seek
方法:
public override long Seek(long offset, SeekOrigin origin) {
throw new InvalidOperationException();
}