簡體   English   中英

使用 WinSCP .NET 程序集上傳后刪除文件

[英]Delete files after upload with WinSCP .NET assembly

我的腳本很簡單

// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.Sftp,
    HostName = conHostName,
    UserName = conUserName,
    Password = conPasswort,
    SshHostKeyFingerprint = conSshHostKeyFingerprint
};

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

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

    TransferOperationResult transferResult;

    if(modus == "download")
    {
        transferResult = session.GetFiles(
            remoteDirectoryDownload, localDirectoryDownload, false, transferOptions);
    } 
    else
    {
        transferResult = session.PutFiles(
            localDirectoryUpload, remoteDirectoryUpload, false, transferOptions);
    }

    transferResult.Check();

    foreach (TransferEventArgs transfer in transferResult.Transfers)
    {
        try
        {
            Console.WriteLine("Delete File: {0}", transfer.FileName);
            session.RemoveFiles(transfer.FileName);
        }
        catch (Exception e)
        {

            Console.WriteLine("Error: {0}", e);
        }
    }
}

當我進行下載時,來自遠程主機的文件將在遠程主機上傳輸和刪除。 但是當我從本地文件夾進行上傳時,上傳會起作用,但不會刪除本地文件夾中的文件。 我沒有錯誤。

我從我的用戶開始。 我是這些文件的所有者,我可以手動刪除它們。

此外,當我在session.RemoveFiles上設置斷點時,將顯示具有正確本地路徑的正確文件。

也許你對我的失敗有什么想法。

Session.RemoveFiles僅刪除遠程文件。 它不能刪除本地文件。 要刪除本地文件,請使用標准 .NET File.Delete

雖然更容易(更好)是將true傳遞給Session.GetFiles / Session.PutFilesremove (第三個)參數。

即使對於下載,它也比您當前的代碼更好,因為它會刪除所有成功下載的文件。 雖然您當前的代碼不會刪除任何文件,但如果只有部分文件成功下載。

此外,您使用的是默認TransferOptions ,因此該代碼是多余的。

最后,您可以將代碼簡化為:

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

    if (modus == "download")
    {
        session.GetFiles(remoteDirectoryDownload, localDirectoryDownload, true).Check();
    } 
    else
    {
        session.PutFiles(localDirectoryUpload, remoteDirectoryUpload, true).Check();
    }
}

暫無
暫無

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

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