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

标签 c# sftp scp winscp winscp-net

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

WinSCP.SessionRemoteException: Transfer was successfully finished, but temporary transfer file 'testfile.zip.filepart' could not be renamed to target file name 'testfile.zip'. If the problem persists, you may want to turn off transfer resume support.

我尝试发送的任何 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);
    }
}

Discussion over at the WinSCP forum表示程序集还不允许对传输恢复支持进行编程控制。有解决办法吗?

最佳答案

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

关于c# - WinSCP:如何确保 SFTP 上传从 .zip.filepart 重命名为 .zip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10858143/

相关文章:

linux - 在 VM 上使用 scp 时获取连接被拒绝错误

amazon-ec2 - 使用 scp 将文件传输到亚马逊 ec2 实例总是给我拒绝权限(publickey,gssapi-with-mic)

c# - Stop vs Break in Parallel.For

c# - Winform : Placing a panel over multiple panels

c# - 微软机器人框架 : broadcast messages to users from database

c# - 如何在.NET中通过SFTP/SSH执行 “double hop”?

c# - 使用 SQL 命令从数据库读取最后插入的 UID

php - Stream_context_set_params 不适用于 ssh2.sftp 包装器

php - 来自 PHP 的 SFTP

c - 如何使用 C 以编程方式 SCP 文件?