Shane_Beggs Ответов: 1

Запрошенный URI недопустим для этой команды FTP, если имя файла содержит #


Я получаю ошибку "запрошенный URI недействителен для этой команды FTP" при попытке загрузить любой файл, содержащий "#" в имени файла. Все остальные файлы загружаются без каких-либо проблем. Если я удаляю #, файлы загружаются нормально, но это не вариант, так как он требуется для многочисленных клиентов.

Что я уже пробовал:

Я проверил полный URI, и он верен...

ftp://path-to-server/folder/#1.jpg

Я протестировал загрузку файлов с помощью Windows FTP &filezilla без каких-либо проблем. По какой-то причине, которую я не могу понять, FTPWebRequest не любит # в именах файлов.

Peter_in_2780

Можете ли вы попробовать кодировать # как # ? Что - то, вероятно, рассматривает его как ссылку на HTML-тег или как (сломанную) кодировку URL-адреса.
(гррр мне потребовалось 3 хода, чтобы правильно закодировать это!)

Shane_Beggs

Огромное спасибо! Я закончил тем, что использовал WebUtlity.UrlEncode(ftp://path-to-server/folder/#1.jpg) который работает как лакомство!

Peter_in_2780

Отлично! Я превращу свой комментарий в ответ. Тогда вопрос будет отображаться как ответ, чтобы другие могли ссылаться на него.

1 Ответов

Рейтинг:
6

Peter_in_2780

Поскольку вы используете веб-запрос, имя файла обрабатывается как URL-адрес. Характер # является специальным символом в URL-адресах и должен быть закодирован, например # Другие специальные символы будут нуждаться в аналогичной кодировке.