WinSCP:如何确保SFTP上传从.zip.filepart重命名为.zip?

sig*_*gil 6 c# sftp scp winscp winscp-net

使用WinSCP的.NET程序集上传文件. OperationResultBase.Check()抛出以下错误:

WinSCP.SessionRemoteException:传输已成功完成,但临时传输文件'testfile.zip.filepart'无法重命名为目标文件名'testfile.zip'.如果问题仍然存在,您可能需要关闭传输恢复支持.

这似乎发生在我尝试发送的任何zip文件中.如果它有所不同,这些是使用DotNetZip库创建的zip文件.

我正在使用的代码,直接来自WinSCP文档中的示例:

public void uploadFile(string filePath, string remotePath)
{
    TransferOptions transferOptions = new TransferOptions();
    transferOptions.TransferMode = TransferMode.Binary;
    TransferOperationResult transferResult;
    transferResult = currentSession.PutFiles(filePath, remotePath, false, transferOptions);
    transferResult.Check();
    foreach (TransferEventArgs transfer in transferResult.Transfers)
    {
        Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
    }
}
Run Code Online (Sandbox Code Playgroud)

在WinSCP论坛上的讨论表明,程序集还不允许以编程方式控制转移恢复支持.这有解决方法吗?

dma*_*tta 4

听起来好像文件上传到的目标服务器上的文件系统不允许文件更改权限。这可能会导致在上传完成时重命名文件失败,尽管事实上整个文件已上传并使用传输过程中使用的临时文件名写入文件系统。如果您没有目标服务器的管理访问权限,则可以通过尝试重命名目标服务器上已有的文件来进行测试。如果也失败了,那么您需要更改目标服务器上的适当权限才能使其正常工作。否则,您可能必须使用错误消息中提供的建议来关闭恢复支持,以便最初打开它以使用所需的文件名而不是临时文件名(带有 .filepart 扩展名)进行写入。