Полный путь от ввода файла с использованием jQuery
Когда я звоню val()
на входе с type="file"
Я получаю только имя файла, а не полный путь. Как я могу получить полный путь?
3 ответа
Вы не можете: это функция безопасности во всех современных браузерах.
Для IE8 он по умолчанию отключен, но может быть активирован повторно с помощью параметра безопасности:
Когда файл выбирается с использованием объекта input type=file, значение свойства value зависит от значения параметра безопасности "Включить путь к локальному каталогу при загрузке файлов на сервер" для зоны безопасности, используемой для отображения веб-страницы. содержащий входной объект.
Полное имя файла выбранного файла возвращается, только если этот параметр включен. Когда этот параметр отключен, Internet Explorer 8 заменяет локальный диск и путь к каталогу строкой C:\fakepath\, чтобы предотвратить несоответствующее раскрытие информации.
Во всех других известных мейнстримных браузерах он также отключен. Имя файла - лучшее, что вы можете получить.
Более подробная информация и хорошие ссылки в этом вопросе. Это относится к получению значения на стороне сервера, но проблема та же в JavaScript перед отправкой формы.
Ну, получить полный путь невозможно, но у нас может быть временный путь.
Попробуй это:
Это даст вам временный путь, а не точный путь, вы можете использовать этот скрипт, если вы хотите показать выбранные изображения, как в этом примере jsfiddle (попробуйте это, выбрав изображения, а также другие файлы): -
Вот код: -
HTML: -
<input type="file" id="i_file" value="">
<input type="button" id="i_submit" value="Submit">
<br>
<img src="" width="200" style="display:none;" />
<br>
<div id="disp_tmp_path"></div>
JS: -
$('#i_file').change( function(event) {
var tmppath = URL.createObjectURL(event.target.files[0]);
$("img").fadeIn("fast").attr('src',URL.createObjectURL(event.target.files[0]));
$("#disp_tmp_path").html("Temporary Path(Copy it and try pasting it in browser address bar) --> <strong>["+tmppath+"]</strong>");
});
Это не совсем то, что вы искали, но может быть, это может вам где-то помочь.
Как указано выше, это обычно проблема разрешения. попробуйте и переместите файл в другую область и предоставьте ему полные права.
var path = $ ('# file'). attr ("value");