LibCurl SFTP重命名文件

解决了 ... 在更多地转移之后,通过使用“重命名”作为引用命令,它需要包括原始名称和包括重命名到目标的完整路径的完整路径。在我的其他挫败尝试中,我没有尝试过这条道路。 大家好,我已经尝试了所有不同的组合,不断失败,不知道我错过了什么。我正在尝试使用Libcurl在SFTP站点上进行简单的文件重命名。我一直在寻找答案,但不断提出来。 BTW ...对于此测试,文件夹中只有一个文件名,因此没有关于现有文件覆盖的问题...而且我是最初为任何可能的“权限”问题上传文件的登录用户。 我的第一个测试是获得预期的简单语法正确,但结果不然。我首先开始使用NON-SFTP站点...只需常规FTP。
// ex: fpt://mysite.com/subpathNeeded/
curl_easy_setopt(MyCurl, CURLOPT_URL, RemotePath );  


// need a "QUOTE" command before rename will occur in postQuote
strcpy_s( NewCmd, _countof(NewCmd), "PWD " );  
quotelist = curl_slist_append(quotelist, NewCmd ); 

// NOW, we can issue the rename from and rename to commands
strcpy_s( RenameFrom, _countof(RenameFrom), "RNFR " );
strcat_s( RenameFrom, _countof(RenameFrom), RemoteCurrentFileName );
postquotelist = curl_slist_append( postquotelist, RenameFrom );

strcpy_s( RenameTo, _countof(RenameTo), "RNTO " );
strcat_s( RenameTo, _countof(RenameTo), RemoteRenameToName );
postquotelist = curl_slist_append( postquotelist, RenameTo );

curl_easy_setopt(MyCurl, CURLOPT_QUOTE, quotelist ); 
curl_easy_setopt(MyCurl, CURLOPT_POSTQUOTE, postquotelist ); 

// NOW, perform the print working directory, then rename...
MyCurlResult = curl_easy_perform(MyCurl); 
这没问题。所以现在,我切换到SFTP并且它失败了...通过研究,SFTP不喜欢“PWD”,但确实允许“pwd”(案例问题),没问题。然后,它不喜欢RNFR和RNTO,但接受“mv”(移动)。所以,如果我处于SFTP模式,我会改为
// lower case "pwd" print working directory
strcpy_s( NewCmd, _countof(NewCmd), "pwd" );
quotelist = curl_slist_append(quotelist, NewCmd ); 

// "mv" = move "originalfile" "newfile"
strcpy_s( RenameFrom, _countof(RenameFrom), "mv "" );
strcat_s( RenameFrom, _countof(RenameFrom), RemoteCurrentFileName );
strcat_s( RenameFrom, _countof(RenameFrom), "" "" );
strcat_s( RenameFrom, _countof(RenameFrom), RemoteRenameToName );
strcat_s( RenameFrom, _countof(RenameFrom), """ );
postquotelist = curl_slist_append( postquotelist, RenameFrom );
当我执行此操作时,我得到一个CURL ERROR ... 但是,如果我不尝试“mv”命令并且只发送“pwd”的QUOTE命令,它会很好地完成,它会正确列出我想要重命名文件的预期文件夹/子目录。所以我知道它在正确的目录中。我在“RemoteCurrentFileName”和“RemoteRenameToName”中的值只是文件的主干,分别没有完整的路径。我也试过包括完整路径,两个版本都失败了。例如:
RemoteCurrentFileName = "FileIWantToRename.txt"
    or 
RemoteCurrentFileName = "/subpathNeeded/FileIWantToRename.txt"
另外,我查看了文档,并注意到“重命名”是一个有效的“QUOTE”命令,并尝试过。
rename "original file" "new file"
那也失败了 这应该不难做到。我错过了什么简单/愚蠢......这完全令人沮丧。     
已邀请:
解决了 ... 在更多地转移之后,通过使用“重命名”作为引用命令,它需要包括原始名称和包括重命名到目标的完整路径的完整路径。在我的其他挫败尝试中,我没有尝试过这条道路
strcpy_s( RenameFrom, _countof(RenameFrom), "rename "" );
strcat_s( RenameFrom, _countof(RenameFrom), RemoteCurrentFileNameWithFullPath );
strcat_s( RenameFrom, _countof(RenameFrom), "" "" );
strcat_s( RenameFrom, _countof(RenameFrom), RemoteRenameToNameWithFullPath );
strcat_s( RenameFrom, _countof(RenameFrom), """ );
quotelist = curl_slist_append( quotelist, RenameFrom );

MyCurlResult = curl_easy_perform(MyCurl); 
    

要回复问题请先登录注册