Полный путь от ввода файла с использованием jQuery

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

3 ответа

Решение

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

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

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

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

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

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

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

Попробуй это:

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

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

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

var path = $ ('# file'). attr ("value");

Другие вопросы по тегам