Полный путь от ввода файла с помощью jQuery

Когда я вызываю val() на входе с type="file", я получаю только имя файла, а не полный путь. Как я могу получить полный путь?

Ответ 1

Вы не можете: это функция безопасности во всех современных браузерах.

Для IE8 он по умолчанию отключен, но может быть активирован с помощью параметра безопасности:

Когда файл выбирается с помощью типа input type = file, значение свойства value зависит от значения параметра безопасности "Включить локальный каталог при загрузке файлов на сервер" для зоны безопасности, используемой для отображения веб-страницу, содержащую входной объект.

Полноценное имя файла выбранного файла возвращается, только если этот параметр включен. Когда параметр отключен, Internet Explorer 8 заменяет путь локального диска и каталога на строку C:\fakepath \, чтобы предотвратить неприемлемое раскрытие информации.

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

Более подробная информация и хорошие ссылки в этом вопросе. Он ссылается на получение значения на стороне сервера, но проблема остается прежней в JavaScript перед отправкой формы.

Ответ 2

Ну, полный путь невозможен, но у нас может быть временный путь.

Попробуйте следующее:

Это даст вам временный путь, а не точный путь, вы можете использовать этот script, если вы хотите отобразить выбранные изображения, как в этом примере jsfiddle (попробуйте его, выбрав изображения, а также другие файлы): -

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" );