Получить полный путь (на стороне сервера) файла, загруженного с помощью Firefox? - PullRequest
4 голосов
/ 06 ноября 2008

Когда я использую форму, содержащую <input id="myFile" type="file" runat="server" /> для загрузки файла, мой код на стороне сервера видит только имя файла без полного пути при использовании Firefox, хотя он отлично работает в IE.

Возможно ли в этом случае получить полный путь к файлу на стороне сервера?

Ответы [ 3 ]

8 голосов
/ 06 ноября 2008

Вы не можете. На самом деле, только IE предоставляет эту информацию, которая в большинстве случаев не важна для сервера. По крайней мере, ни FF, ни Opera не предоставляют эту информацию.
[ОБНОВЛЕНИЕ] Также пробовал с Safari, но до сих пор нет пути ... Кто-то сообщил, что Chrome может предоставить информацию, хотя она и является бета-версией, которая может измениться ...

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

На самом деле, я знаю, что некоторые люди нуждались в этой информации по некоторым причинам, поэтому они использовали JavaScript, чтобы выбрать путь из поля ввода файла и поместить его в скрытое поле. Разработчики FF обнаружили, что это небезопасно (вы можете многому научиться по простому пути ... например, по имени пользователя!), Поэтому запретили такое использование в FF3, заставляя некоторых людей злиться на этот релиз ...

Ссылки: Поле загрузки файлов в Firefox 3 , упомянутое в Раздражение в Firefox 3: отключение включения в управлении загрузкой файлов ... ; также Отключение поля ввода файла приводит к большой проблеме с юзабилити , среди многих других.

3 голосов
/ 06 ноября 2008

Вы никогда не можете быть уверены, что получили полный путь к файлу или даже надежное имя файла или тип содержимого, представленный в файле загрузки файла. Даже если вы получите полный путь к файлу, вы не знаете, какой символ-разделитель пути используется в операционной системе клиента или расширение файла (если имеется) обозначает что-либо вообще.

Если ваше приложение требует filepath / filename / content-type представленного файла для чего-то большего, чем просто предоставление пользователю заголовка по умолчанию для загруженного элемента, оно делает что-то неправильно и нуждается в исправлении.

2 голосов
/ 06 ноября 2008

Я уже говорил об этом в комментарии, но думаю, что это стоит повторить.

Microsoft решила заставить файловый элемент управления указывать полный путь к файлу для использования в приложениях интрасети.

Только в спецификации HTML упоминается о том, что значение должно содержать в одном месте:

Пользовательские агенты могут использовать значение атрибут value в качестве исходного файла имя.

Тем не менее, у них также есть примеры того, как должна выглядеть кодировка multipart / form-data , и она не содержит пути к файлу.

Другими словами, IE нарушает стандарт, и вы не можете полагаться на другие браузеры, даже более поздние версии IE, для его поддержки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...