У меня есть программа, которая должна переместить файл из одного каталога в другой на FTP-сервере.Например, файл находится в:
ftp://1.1.1.1/MAIN/Dir1
, и мне нужно переместить файл в:
ftp://1.1.1.1/MAIN/Dir2
Я нашел несколько статей, рекомендующих использовать команду Rename, поэтому япробовал следующее:
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();
Но, похоже, это не работает - я получаю следующую ошибку:
Удаленный сервер вернул ошибку: (550) Файл недоступен (например, файл не найден, нет доступа).
Сначала я подумал, что это может быть связано с разрешениями, но, насколько я вижу, у меня есть разрешения на весь FTP-сайт (он находится на моемлокальный ПК, и URI преобразуется в localhost).
Можно ли перемещать файлы между каталогами, как это, и если нет, то как это возможно?
Для решения некоторых из пунктов/ предложения, которые были подняты:
- Я могу загрузить тот же файл из исходного каталога, так что он определенно существует (то, что я делаю, сначала скачивает файл, а затем перемещает его в другое место).
- Я могу получить доступ к FTP-сайту сбраузер (как исходный, так и целевой каталог)
- ftp-сервер работает под моим собственным экземпляром IIS на моем локальном компьютере.
- Путь и регистр указаны правильно и специальных символов нет.
Кроме того, я попытался установить путь к каталогу:
ftp://1.1.1.1/%2fMAIN/Dir1/MyFile.txt
Как для исходного, так и для целевого пути - но это также не имеет значения.
Я нашел эту статью, в которой, похоже, говорится, что указание пункта назначения в качестве относительного пути поможет - кажется невозможным указать абсолютный путь в качестве пункта назначения.
reqFTP.RenameTo = “../Dir2/MyFile.txt";