How to avoid displaying «C:fakepath» while file uploading. While uploading the file javacript method is called to set the selected path im my case
asked Mar 11, 2013 at 5:22
2
This is a browser security feature that is implemented.
According to the specifications of HTML5
, a file upload control should not reveal the real local path to the file you have selected, if you manipulate its value string with JavaScript. Instead, the string that is returned by the script, which handles the file information is c:fakepath
.
If you still want to get rid of this fakepath you may check out this site
How To Get Rid of C:FakePath in IE When Uploading A File to the Website
Hope it helps.
answered Mar 11, 2013 at 5:30
Karthik ChintalaKarthik Chintala
5,4455 gold badges29 silver badges60 bronze badges
03 нояб 2021 11:21 #19445
от zhukcbs
Столкнулись с такой проблемой: не подгружается документ, а путь выглядит как C:fakepathфайл.pdf
Пробовали менять название, уменьшить размер, браузер chromium-gost, сайт gisgmu.cert.roskazna.ru в списке доверенных…
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
03 нояб 2021 13:09 — 03 нояб 2021 14:35 #19447
от Gvinpin
zhukcbs пишет: не подгружается документ
А скрин случайно получился с пустой датой или так и пытаетесь загрузить?
______________________________
Лучше уже было (c)
Спасибо сказали: zhukcbs
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
03 нояб 2021 17:02 — 03 нояб 2021 17:03 #19448
от FarWinter
zhukcbs пишет: Столкнулись с такой проблемой: не подгружается документ, а путь выглядит как C:fakepathфайл.pdf
Пробовали менять название, уменьшить размер, браузер chromium-gost, сайт gisgmu.cert.roskazna.ru в списке доверенных…
А у вас в имени файла ПФХД_30_09_21_.pdf нет случайно пробела между ПФХД_30_09_21 и _.pdf ?
Может пробел мешает, попробуйте переименовать без пробелов в имени в ПФХД_30_09_21.pdf и ещё поле «Дата документа» не заполнена.
Спасибо сказали: zhukcbs
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
03 нояб 2021 18:19 — 03 нояб 2021 18:32 #19449
от zhukcbs
Дату документа заполнял та же история и пробелы в названии тоже убрал, и в яндес браузере пробовал — путь к файлу не отображается корректно и выходит сообщение о невозможности загрузить пустой документ. Пробовал разные файлы с другим расширением и размером, в том числе которые раньше подгружались.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
04 нояб 2021 08:16 — 04 нояб 2021 08:37 #19450
от Alex67
fakepath при загрузке файла
Ручная настройка в IE
- Зайдите в меню Пуск
- Щелкните по пункту Настройка, если такого пункта нет, перейдите к следующему шагу.
- Щелкните пункт Панель управления
- Щелкните два раза по иконке Свойства обозревателя
- Перейдите на вкладку Безопасность
- Нажмите на зеленую галочку с надписью Надежные узлы
- Затем нажмите кнопку Другой
- В появившемся окне найдите пункт Разное
- Рядом с пунктом «Включать путь к локальному каталогу при загрузке файлов на сервер» поставьте галочку «Разрешить» или «Включить». Затем нажмите «Ок»
- Перезапустите Internet Explorer
У меня для надёжных узлов этот пункт включен по умолчанию
Мб сайт не добавлен в надёжные узлы?
«Кто людям помогает — лишь тратит время зря. Хорошими делами прославиться нельзя» (с) Шапокляк
Спасибо сказали: zhukcbs
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
04 нояб 2021 08:55 #19451
от zhukcbs
Всем спасибо видимо дело было в размере файла. Однако почему ошибка пустой файл а не превышен размер не понятно.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
08 нояб 2021 12:16 #19458
от ranger
zhukcbs пишет: Всем спасибо видимо дело было в размере файла. Однако почему ошибка пустой файл а не превышен размер не понятно.
Как раз-таки понятно — криворукие разрабы
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
24 фев 2022 16:50 — 24 фев 2022 16:51 #20377
от Татьянка
Добрый день!
Не можем прикрепить документы, выдает ошибку «Пустой документ не может быть приложен». Формат pdf, размер соответственно 12,5 МБ и 34,5 МБ. Работаем через Яндекс.браузер.
Как можно исправить ошибку?
Спасибо.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
24 фев 2022 17:37 #20378
от Alex_04
Татьянка пишет: Формат pdf, размер соответственно 12,5 МБ и 34,5 МБ.
ИМХО, размеры великоваты. Попробуйте пересканировать документы так, чтоб размеры стали в разы меньше. Очень хороша
FastStone Image Viewer
из статьи
Сканирование подтверждающих документов
в главном меню этого форума «Полезные программы».
«Мы будем жить плохо, но недолго.» (© Черномырдин В.С.)
Спасибо сказали: Татьянка
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Такой папки нет в компьютере. Это специальное название, которое операционная система выводит в пути, чтобы сервер не получил данные об организации хранения данных, о ваших файлах. То есть, операционная система вместо истинного адреса на диске, всегда выдает адрес C:fakepath, чтобы злоумышленники не смогли сканировать ваш диск С по этому адресу.
Обычно такое предупреждение (это предупреждение, а не ошибка) выходит при попытке сервера самостоятельно забрать файл или тайно просканировать диск С.
Вообще, для опытного хакера (или разработчика программ), это не является большим препятствием, просто запрос на удаленный доступ к диску делается другой функцией.
Также, в редких случаях, предупреждение «о невозможности загрузки» выходит в тех случаях, когда загружаемый файл не совпадает по своим внутренним записям с внешней записью, имеет неправильный формат или содержит вирус.
У меня бывают случаи, когда я не могу загрузить файл (картинку) на сайт. При тщательном рассмотрении построении файла, выясняется, что «под картинкой» скрывается какое-то другое дополнительное содержимое. Сервер это обнаруживает и блокирует запись такого файла на свой диск.
Я рад, что браузеры хотят спасти нас от навязчивых скриптов и т.п. Я не доволен тем, что IE помещает что-то в браузер, что делает простой стиль-fix похожим на взломанную атаку!
Я использовал <span> , чтобы представить входной файл, чтобы я мог применить соответствующий стиль к <div> вместо <input> (еще раз, из-за IE). Теперь из-за этого IE хочет показать пользователю путь со значением, который просто гарантированно поставит их на страже и, по крайней мере, опасается (если не полностью отпугнуть их?!)… БОЛЬШЕ IE-CRAP!
В любом случае, благодаря тем, кто разместил объяснение здесь: Безопасность браузера IE: добавление «fakepath» к пути к файлу во входе [ type= «file» ], выложили малый фиксатор-верхний…
Нижеприведенный код выполняет две функции: он исправляет ошибку IE8, в которой событие onChange не запускается до поля загрузки onBlur, и он обновляет элемент с очищенным файловым пути, который не пугает пользователя.
// self-calling lambda to for jQuery shorthand "$" namespace
(function($){
// document onReady wrapper
$().ready(function(){
// check for the nefarious IE
if($.browser.msie) {
// capture the file input fields
var fileInput = $('input[type="file"]');
// add presentational <span> tags "underneath" all file input fields for styling
fileInput.after(
$(document.createElement('span')).addClass('file-underlay')
);
// bind onClick to get the file-path and update the style <div>
fileInput.click(function(){
// need to capture $(this) because setTimeout() is on the
// Window keyword 'this' changes context in it
var fileContext = $(this);
// capture the timer as well as set setTimeout()
// we use setTimeout() because IE pauses timers when a file dialog opens
// in this manner we give ourselves a "pseudo-onChange" handler
var ieBugTimeout = setTimeout(function(){
// set vars
var filePath = fileContext.val(),
fileUnderlay = fileContext.siblings('.file-underlay');
// check for IE lovely security speil
if(filePath.match(/fakepath/)) {
// update the file-path text using case-insensitive regex
filePath = filePath.replace(/C:\fakepath\/i, '');
}
// update the text in the file-underlay <span>
fileUnderlay.text(filePath);
// clear the timer var
clearTimeout(ieBugTimeout);
}, 10);
});
}
});
})(jQuery);
<input type="file" id="file-id" name="file_name" onchange="theimage();">
Это моя кнопка загрузки.
<input type="text" name="file_path" id="file-path">
Это текстовое поле, где я должен показать полный путь к файлу.
function theimage(){
var filename = document.getElementById('file-id').value;
document.getElementById('file-path').value = filename;
alert(filename);
}
Это JavaScript, который решает мою проблему. Но в предупреждающем значении дает мне
C:fakepathtest.csv
и Mozilla дает мне:
test.csv
Но мне нужен локальный полный путь к файлу. Как решить эту проблему?
Если это связано с проблемой безопасности браузера, каков должен быть альтернативный способ сделать это?
Ответ 1
В некоторых браузерах есть функция безопасности, которая запрещает JavaScript знать ваш полный локальный путь к файлу. Это имеет смысл — как клиент, вы не хотите, чтобы сервер знал вашу файловую систему локального компьютера. Было бы неплохо, если бы все браузеры сделали это.
Ответ 2
Если вы перейдете в Internet Explorer, «Инструменты», «Интернет-вариант», «Безопасность», «Пользовательский», найдите «Включить путь к локальному каталогу При загрузке файлов на сервер» (это довольно просто) и нажмите «Включить». Это будет работать
Ответ 3
Используйте
document.getElementById("file-id").files[0].name;
вместо
document.getElementById('file-id').value
Ответ 4
Я использую объект FileReader на входе onchange
для вашего типа входного файла! В этом примере используется функция readAsDataURL, и по этой причине у вас должен быть тег. Объект FileReader также имеет readAsBinaryString для получения двоичных данных, которые впоследствии могут быть использованы для создания того же файла на вашем сервере.
Пример:
var input = document.getElementById("inputFile");
var fReader = new FileReader();
fReader.readAsDataURL(input.files[0]);
fReader.onloadend = function(event){
var img = document.getElementById("yourImgTag");
img.src = event.target.result;
}
Ответ 5
Я рад, что браузеры хотят спасти нас от навязчивых скриптов и т.п. Я не доволен тем, что IE помещает что-то в браузер, что делает простой стиль-fix похожим на взломанную атаку!
Я использовал <span> , чтобы представить входной файл, чтобы я мог применить соответствующий стиль к <div> вместо <input> (еще раз, из-за IE). Теперь из-за этого IE хочет показать пользователю путь со значением, который просто гарантированно поставит их на страже и, по крайней мере, опасается (если не полностью отпугнуть их?!)… БОЛЬШЕ IE-CRAP!
В любом случае, благодаря тем, кто разместил объяснение здесь: Безопасность браузера IE: добавление «fakepath» к пути к файлу во входе [ type= «file» ], выложили малый фиксатор-верхний…
Нижеприведенный код выполняет две функции: он исправляет ошибку IE8, в которой событие onChange не запускается до поля загрузки onBlur, и он обновляет элемент с очищенным файловым пути, который не пугает пользователя.
// self-calling lambda to for jQuery shorthand "$" namespace
(function($){
// document onReady wrapper
$().ready(function(){
// check for the nefarious IE
if($.browser.msie) {
// capture the file input fields
var fileInput = $('input[type="file"]');
// add presentational <span> tags "underneath" all file input fields for styling
fileInput.after(
$(document.createElement('span')).addClass('file-underlay')
);
// bind onClick to get the file-path and update the style <div>
fileInput.click(function(){
// need to capture $(this) because setTimeout() is on the
// Window keyword 'this' changes context in it
var fileContext = $(this);
// capture the timer as well as set setTimeout()
// we use setTimeout() because IE pauses timers when a file dialog opens
// in this manner we give ourselves a "pseudo-onChange" handler
var ieBugTimeout = setTimeout(function(){
// set vars
var filePath = fileContext.val(),
fileUnderlay = fileContext.siblings('.file-underlay');
// check for IE lovely security speil
if(filePath.match(/fakepath/)) {
// update the file-path text using case-insensitive regex
filePath = filePath.replace(/C:\fakepath\/i, '');
}
// update the text in the file-underlay <span>
fileUnderlay.text(filePath);
// clear the timer var
clearTimeout(ieBugTimeout);
}, 10);
});
}
});
})(jQuery);
Ответ 6
Я столкнулся с той же проблемой. В IE8 его можно было бы обработать, создав скрытый ввод после управления вводом файлов. Заполните это значением предыдущего брата. В IE9 это также исправлено.
Моя причина в том, чтобы узнать полный путь, заключалась в том, чтобы создать предварительный просмотр javascript перед загрузкой. Теперь мне нужно загрузить файл, чтобы создать предварительный просмотр выбранного изображения.
Ответ 7
Если вам действительно нужно отправить полный путь к uploded файлу, то вам, вероятно, придется использовать что-то вроде подписанного java-апплета, так как нет никакой возможности получить эту информацию, если браузер не отправит его.
Ответ 8
Кажется, вы не можете найти полный путь в вашем localhost от js, но вы можете скрыть фейк-путь, чтобы просто показать имя файла. Используйте jQuery, чтобы получить выбранное имя файла ввода без пути