我正在使用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();
}
有没有办法检查传输的文件是否与源文件同步?
答案 0 :(得分:0)
在服务器上有适当的支持后,您可以使用Session.CalculateFileChecksum
来计算上传文件的校验和。将其与源文件的校验和进行比较,以验证上传是否成功。
有关完整示例,请参阅Verify checksum of a remote file against a local file over SFTP/FTP protocol(它在PowerShell中,但它很容易将其转换为C#)。
虽然找到一个正确的解决方案,但为什么上传首先失败。
除非在特殊情况下,否则请勿使用.Abort()
方法。也没有任何意义或使用.Dispose()
,因为您位于隐式调用using
的{{1}}块的末尾。