2015-09-21 18 views
0

使用System.Net.FtpClient(它是一個庫,而不是本地.NET組件)。使用System.Net.FtpClient下載的文件與源文件的大小不同

我試圖將文件下載到本地硬盤驅動器(在開發環境中,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);嘗試,因爲它拋出異常

「操作是無效的,由於對象的當前狀態。」

而我沒有找到解決方案。也許這是問題的一部分。

回答

0

您將重新啓動位置設置爲15(方法的第三個參數爲OpenRead方法)。

因此,響應明顯缺少遠程文件的前15個字節。


關於你的另一個問題有關.Seek

這是風馬牛不相及的問題。該FtpDataStream(由.OpenRead返回)沒有實現.Seek方法:

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

謝謝。所以我只是刪除了「15」,它看起來很好。 – TTT