Какие символы запрещены в команде удаления ftp?

StackOverflow https://stackoverflow.com/questions/404175

  •  03-07-2019
  •  | 
  •  

Вопрос

Я загружаю файлы с внешнего сервера по FTP, затем удаляю их на внешнем сервере, и один файл не удалось загрузить, поскольку в имени файла был пробел.Я изменил команду удаления ftp, чтобы имя файла заключалось в кавычки.

ftpStream.WriteLine("delete """ & FileToDelete & """")

Но есть ли другие символы, которые пользователь может использовать при создании имени файла, от которых моя программа все равно будет захлебываться?Я не могу контролировать, какими могут быть эти имена файлов.

(Я поставил тег SSIS и SQL Server, поскольку создаю задачу ftp «на лету» из пакета SSIS.ОС с обеих сторон Win XP)

Это было полезно?

Решение

Любые символы, зарезервированные файловой системой, не допускаются.Обычно это пробелы, запятые, косые черты, двоеточия, знаки вопроса, двойные кавычки и т. д.Но, как упомянул ДжаредПар, пространство, вероятно, является единственным универсальным нарушителем, поскольку каждая файловая система имеет свой собственный набор зарезервированных символов, которые не всегда перекрываются.

Хорошая идея - кодировать URL-адреса любых путей FTP или HTTP.Это преобразует пробелы в %20, что обычно должно пониматься ftp-сервером.

Другие советы

См. раздел 5.3 FTP RFC. (RFC 959).На самом деле в имени файла нет недопустимых символов, кроме CrLf.

Проблема заключается в том, чтобы узнать, какие символы будет подавляться целевым сервером, а какие нет.недопустимые символы FTP.Я предполагаю, что помимо пробела не так уж много символов, которые могут вызвать проблемы. Но я не эксперт по FTP.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top