使用WinSCP的Session.DuplicateFile在SFTP复制文件时路径异常求助
解决WinSCP Session.DuplicateFile路径错误问题
问题根源
你的代码混用了Unix风格正斜杠/和Windows风格反斜杠\,而在字符串中反斜杠属于转义字符,实际传递给WinSCP的路径里丢失了分隔符,导致整个路径字符串被当作根目录下的文件名,最终文件被存到了服务器根目录。
解决方案
SFTP服务器基于SSH环境,默认使用Unix风格路径,必须统一用正斜杠/作为路径分隔符,避免使用未转义的反斜杠。
修正后的代码
session.DuplicateFile( "/Susen Test Folder/Uploads/Folder1/Folder2/20190718les155004.png", "/Susen Test Folder/Uploads/Websites/content.folder.co/Folder1/Folder2/20190718les155004.png")
额外注意事项
- 如果使用C#等支持逐字字符串的语言,也可以用
@前缀保留反斜杠,但仍需转换为Unix路径格式(WinSCP可自动兼容,但统一用正斜杠更稳妥):session.DuplicateFile( @"/Susen Test Folder/Uploads/Folder1/Folder2/20190718les155004.png", @"/Susen Test Folder/Uploads/Websites/content.folder.co/Folder1/Folder2/20190718les155004.png") - 确保目标路径的所有父目录已存在,
DuplicateFile不会自动创建不存在的目录,若目录缺失会触发报错,需提前用Session.CreateDirectory创建对应目录。
内容的提问来源于stack exchange,提问作者Susen Maharjan
相关产品推荐
相关产品推荐

