簡體   English   中英

使用WinSCP .NET程序集傳輸后比較文件

[英]Compare file after transfer using WinSCP .NET assembly

我正在使用WinSCP .NET程序集將文件從Windows傳輸到Unix服務器(主要是.doc文件)。 有時,文件作為空白文檔傳輸。 但是源已經包含了內容。 我無法進行目錄級同步,因為我正在將文檔從其他客戶端計算機傳輸到Unix服務器。 我正在使用以下代碼:

SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.Ftp,
    HostName = cls_appvars.Set_FTP_Host,
    UserName = cls_appvars.Set_FTP_User,
    Password = cls_appvars.Set_FTP_Password,
};

using (Session session = new Session())
{                   
    session.Open(sessionOptions);

    TransferOptions transferOptions = new TransferOptions();
    transferOptions.TransferMode = TransferMode.Binary;

    TransferOperationResult transferResult;

    transferResult = session.GetFiles(wordfilepath, downloadwordpath + ".tmp", false, transferOptions);

    System.IO.File.Move(downloadwordpath + ".tmp", downloadwordpath);

    transferResult.Check();   

    foreach (TransferEventArgs transfer in transferResult.Transfers)
    {
        System.IO.File.AppendAllText(path, System.DateTime.Now + "***func_download_file_individual() in scribeapp*** Download succeeded for file " + transfer.FileName + Environment.NewLine);
    }

    session.Abort();
    session.Dispose();
}

有什么方法可以檢查傳輸的文件是否與源文件同步?

在服務器上有適當的支持,您可以使用Session.CalculateFileChecksum來計算上載文件的校驗和。 將其與源文件的校驗和進行比較,以驗證上載是否成功。

有關完整示例,請參閱通過SFTP / FTP協議將遠程文件的校驗和與本地文件進行校驗 (在PowerShell中,但是將其輕松轉換為C#應該很容易)。

盡管找到一個正確的解決方案,但為什么上傳首先失敗了。


除非有特殊情況,否則不要使用.Abort()方法。 也沒有意義或使用.Dispose() ,就像您在using塊的.Dispose()隱式調用.Dispose()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM