Полный путь от ввода файла с использованием jQuery - PullRequest
38 голосов
/ 16 августа 2010

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

Ответы [ 2 ]

47 голосов
/ 16 августа 2010

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

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

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

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

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

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

15 голосов
/ 18 июля 2014

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

Попробуйте:

Это даст вам временный путь, а не точный путь, который вы можете использоватьэтот скрипт, если вы хотите показать выбранные изображения, как в этом примере 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>");
});

Это не совсем то, что вы искали, но можетбудь то может помочь вам где-то.

...