作者:秦乐0_707 | 来源:互联网 | 2023-08-10 17:29
使用带有临时文件名的WinSCP.NETCOM上传文件我在C#中创建一个小型.NET应用程序,将文件上传到FTP服务器。我正在使用.NETDLLforWinSCP,我一直试图找到一
使用带有临时文件名的WinSCP .NET / COM上传文件
我在C#中创建一个小型.NET应用程序,将文件上传到FTP服务器。 我正在使用.NET DLL for WinSCP,我一直试图找到一个很好的解决方案来解决我的问题。
我将放置所有文件的FTP文件夹将由另一个应用程序监视。 然后,此应用程序将采用这些文件并自动处理它们。
所以我想避免的是在传输完成之前我的文件被应用程序抓取。
所以我想使用临时文件名使用或可能是临时文件夹,然后在上传完成后移动文件。
你认为什么是最好的方法? 第二个问题是,在WinSCP .NET中,应该有一个Transfer Resume选项,它使用临时名称传输文件,并在完成时重命名。 但我似乎无法让这个工作,并正在寻找任何关于如何使这个工作的提示?
你是对的,WinSCP的“转移到临时文件名”function看起来像是要走的路。
它使WinSCP上传文件的.filepart
附加到其名称,一旦完成就剥离扩展。
TransferOptions transferOptiOns= new TransferOptions(); transferOptions.ResumeSupport.State = TransferResumeSupportState.On; session.PutFiles(@"d:touploadmyfile.dat", "/home/user/", false, transferOptions).Check();
虽然它仅受SFTP协议支持。
使用FTP协议,您必须手动执行此操作。
session.PutFiles(@"d:touploadmyfile.dat", "/home/user/myfile.dat.filepart").Check(); session.MoveFile("/home/user/myfile.dat.filepart", "/home/user/myfile.dat");
如果要上载多个文件,可以使用操作掩码 ,并迭代TransferOperationResult
Session.PutFiles
返回的成功上载文件列表,为每个文件调用Session.MoveFile
。
TransferOperationResult transferResult; transferResult = session.PutFiles(@"d:toupload*.dat", "/home/user/*.filepart") // Throw on any error transferResult.Check(); // Rename uploaded files foreach (TransferEventArgs transfer in transferResult.Transfers) { string finalName = transfer.Destination.Replace(".filepart", ".dat"); session.MoveFile(transfer.Destination, finalName); }
在上载/上传到临时文件名时锁定文件一文中还有一个完整的PowerShell示例。
另请参阅SFTP文件锁定机制 (也适用于FTP),以了解隐藏正在上载的文件的不同方法。
上述就是C#学习教程:使用带有临时文件名的WinSCP .NET / COM上传文件分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—编程笔记