Ho un programma che deve spostare un file da una directory a un'altra su un server FTP. Ad esempio, il file si trova in:Come posso usare FTP per spostare file tra le directory?
ftp://1.1.1.1/MAIN/Dir1
e ho bisogno di spostare il file:
ftp://1.1.1.1/MAIN/Dir2
ho trovato un paio di articoli che raccomandano l'uso del comando Rinomina, così ho provato quanto segue:
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();
Ma questo non sembra funzionare - ricevo il seguente errore:
The remote server returned an error: (550) File unavailable (e.g., file not found, no access).
In un primo momento ho pensato che questo potrebbe riguardare le autorizzazioni, ma per quanto posso vedere, ho le autorizzazioni per l'intero sito FTP (è sul mio PC locale e l'uri è risolto a localhost).
Dovrebbe essere possibile spostare file tra le directory come questa, e in caso contrario, come è possibile?
per affrontare alcuni dei punti di/suggerimenti che sono state sollevate:
- posso scaricare lo stesso file dalla directory di origine, quindi esiste sicuramente (quello che sto facendo è il download prima, e poi spostandolo da qualche altra parte).
- Posso accedere al sito ftp da un browser (sia la directory di origine che di destinazione)
- Il server ftp è in esecuzione con la mia istanza IIS sul mio computer locale.
- Il percorso e il caso sono corretti e non ci sono caratteri speciali.
Inoltre, ho provato a fissare il percorso della directory di essere:
ftp://1.1.1.1/%2fMAIN/Dir1/MyFile.txt
Sia per il percorso di origine e di destinazione - ma questo non fa differenza neanche.
Ho trovato l'articolo this, che sembra dire che specificare la destinazione come percorso relativo potrebbe essere d'aiuto: non sembra possibile specificare un percorso assoluto come destinazione.
reqFTP.RenameTo = “../Dir2/MyFile.txt";
Se si collega ftp://1.1.1/MAIN/Dir1/MyFile.txt in un browser, funziona? –
Il percorso contiene caratteri speciali che devono essere sfuggiti? –
Vedi le ultime modifiche, ma le risposte sono: sì - funziona da un browser e, no - il percorso non ha caratteri speciali –