我有一個程序需要將文件從FTP服務器上的一個目錄移動到另一個目錄。例如,該文件是:如何使用FTP在目錄之間移動文件?
ftp://1.1.1.1/MAIN/Dir1
,我需要將文件移動到:
ftp://1.1.1.1/MAIN/Dir2
我發現一對夫婦的文章推薦使用重命名命令,所以我嘗試了以下內容:
Uri serverFile = new Uri(「ftp://1.1.1.1/MAIN/Dir1/MyFile.txt");
FtpWebRequest reqFTP= (FtpWebRequest)FtpWebRequest.Create(serverFile);
reqFTP.Method = WebRequestMethods.Ftp.Rename;
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(ftpUser, ftpPass);
reqFTP.RenameTo = 「ftp://1.1.1.1/MAIN/Dir2/MyFile.txt";
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
但是這似乎並沒有工作 - 我得到以下錯誤:
The remote server returned an error: (550) File unavailable (e.g., file not found, no access).
起初我以爲這可能與權限有關,但據我所見,我有權訪問整個FTP站點(它位於本地PC上,uri已解析爲本地主機)。
是否應該可以在這樣的目錄之間移動文件,如果沒有,它怎麼可能?
解決一些已經提出的問題/建議:
- 我可以從源目錄下載同一個文件,所以它肯定存在(我在做什麼,首先下載該文件,然後將它移到其他地方)。
- 我可以從瀏覽器(包括源和目標目錄)訪問ftp站點
- ftp服務器在我本地機器上的我自己的IIS實例下運行。
- 路徑和大小寫是正確的,沒有特殊字符。
此外,我已經嘗試設置目錄路徑是:
ftp://1.1.1.1/%2fMAIN/Dir1/MyFile.txt
兩個源和目標路徑 - 但是這並沒有區別兩種。
我發現this文章,似乎說,指定目的地作爲相對路徑會有所幫助 - 它似乎不可能指定絕對路徑作爲目的地。
reqFTP.RenameTo = 「../Dir2/MyFile.txt";
如果您將ftp://1.1.1.1/MAIN/Dir1/MyFile.txt插入到瀏覽器中,它是否正常工作? – 2011-02-01 16:12:19
該路徑是否包含需要轉義的特殊字符? – 2011-02-01 16:18:11
查看最新編輯內容,但答案是:是 - 它可以在瀏覽器中正常工作,否 - 路徑中沒有特殊字符 – 2011-02-02 07:45:15