Как получить полный путь выбранного файла при смене с помощью javascript, jquery-ajax?
как получить полный путь файла при выборе файла с помощью <input type=‘file’>
<input type="file" id="fileUpload">
<script type="text/javascript">
function getFilePath(){
$('input[type=file]').change(function () {
var filePath=$('#fileUpload').val();
});
}
</script>
но путь к файлу var содержит only name из выбранного файла, а не full path.
Я искал его в сети,но кажется, что по соображениям безопасности браузеры (FF, chrome) просто дают имя файла.
Есть ли другой способ получить полный путь к выбранному файлу?
9 ответов:
по соображениям безопасности браузеры не позволяют этого, т. е. JavaScript в браузере не имеет доступа к файловой системе, однако с помощью HTML5 File API, только Firefox предоставляет
mozFullPathсвойство, но если вы попытаетесь получить значение, оно возвращает пустую строку:$('input[type=file]').change(function () { console.log(this.files[0].mozFullPath); });Так что не тратьте свое время.
редактировать: Если вам нужен путь к файлу для чтения файла вы можете использовать FileReader API вместо этого. Здесь есть связанный вопрос на так:предварительный просмотр изображения перед отправкой.
Попробуйте Это:
это даст вам временный путь не точный путь, вы можете использовать этот скрипт, если вы хотите показать выбранные изображения, как в этом примере jsfiddle(попробуйте его с помощью selectng изображений, а также других файлов): -
вот код :-
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>"); });не совсем то, что вы ищете, но может быть это может помочь вам где-то.
вы не можете этого сделать-браузер не позволит этого из-за проблем безопасности.
когда файл выбирается с помощью объекта input type=file, значение от стоимости имущества зависит от стоимости "включают местные путь к каталогу при загрузке файлов на сервер " Настройка безопасности для зона безопасности, используемая для отображения веб-страницы, содержащей входные данные объект.
возвращается только полное имя выбранного файла если этот параметр включен. Если параметр отключен, интернет Проводник 8 заменяет локальный диск и путь к каталогу строкой C:\fakepath\ для того, чтобы предотвратить ненадлежащее раскрытие информации.
и другие
вы пропустили
);это в конце функции событие change.также не создавайте функцию для события изменения, а просто используйте ее, как показано ниже,
<script type="text/javascript"> $(function() { $('#fileUpload').on('change',function () { var filePath = $(this).val(); console.log(filePath); }); }); </script>
вы не можете. Безопасность останавливает вас за то, что вы знаете что - либо о файловой системе клиентского компьютера-он может даже не иметь его! Это может быть MAC, ПК, планшет или интернет - холодильник-вы не знаете, не можете знать и не будете знать. И, позволяя вам получить полный путь может дать вам некоторую информацию о клиенте, особенно если это сетевой диск, например.
на самом деле вы можете получить его при определенных условиях, но он требует элемента управления ActiveX, и будет не работает в 99.99% случаев.
вы не можете использовать его для восстановления файла в исходное место в любом случае (так как у вас нет абсолютно никакого контроля над тем, где хранятся загрузки, или даже если они хранятся), поэтому на практике это не очень полезно для вас в любом случае.
ты это серьезно?
$('#i_file').change( function(event) { var tmppath = URL.createObjectURL(event.target.files[0]); $("img").fadeIn("fast").attr('src',tmppath); });
вы можете использовать следующий код, чтобы получить рабочий локальный URL для загруженного файла:
<script type="text/javascript"> var path = (window.URL || window.webkitURL).createObjectURL(file); console.log('path', path); </script>
вы никогда не должны делать так....и я думаю, что пробовать его в последних браузерах бесполезно (из того, что я знаю) .. все последние браузеры с другой стороны , не позволит этого....
некоторые другие ссылки, которые вы можете пройти, чтобы найти обходной путь, как получение значения serverside, но не в clientside (javascript)
полный путь от входного файла с помощью jQuery
как получить путь к файлу из формы ввода HTML в Firefox 3
вы можете, если загрузка всей папки является опцией для вас
<input type="file" webkitdirectory directory multiple/>событие изменения будет содержать:
.target.files[...].webkitRelativePath: "FOLDER/FILE.ext"
элемент файла имеет и массив вызова
filesОн содержит все необходимые вещи вам нужноvar file = document.getElementById("upload"); file.addEventListener("change", function() { for (var i = 0; i < file.files.length; i++) { console.log(file.files[i].name); } }, false);
Comments