Когда я вызываю val()
на входе с type="file"
, я получаю только имя файла, а не полный путь. Как я могу получить полный путь?
Полный путь от ввода файла с помощью jQuery
Ответ 1
Вы не можете: это функция безопасности во всех современных браузерах.
Для IE8 он по умолчанию отключен, но может быть активирован с помощью параметра безопасности:
Когда файл выбирается с помощью типа input type = file, значение свойства value зависит от значения параметра безопасности "Включить локальный каталог при загрузке файлов на сервер" для зоны безопасности, используемой для отображения веб-страницу, содержащую входной объект.
Полноценное имя файла выбранного файла возвращается, только если этот параметр включен. Когда параметр отключен, Internet Explorer 8 заменяет путь локального диска и каталога на строку C:\fakepath \, чтобы предотвратить неприемлемое раскрытие информации.
Во всех других современных браузерах, которые я знаю, он также отключен. Имя файла - лучшее, что вы можете получить.
Более подробная информация и хорошие ссылки в этом вопросе. Он ссылается на получение значения на стороне сервера, но проблема остается прежней в JavaScript перед отправкой формы.
Ответ 2
Ну, полный путь невозможен, но у нас может быть временный путь.
Попробуйте следующее:
Это даст вам временный путь, а не точный путь, вы можете использовать этот script, если вы хотите отобразить выбранные изображения, как в этом примере 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>");
});
Не то, что вы искали, но может быть, это может помочь вам где-то.
Ответ 3
как указано выше, обычно это проблема с разрешением. попробуйте и переместите файл в другую область и предоставите ему полные разрешения.
var path = $('# file'). attr ( "value" );