Fakepath при загрузке файла как исправить

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

lspriya87's user avatar

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 Chintala's user avatar

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 в списке доверенных…

Безымянный.jpg

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.


03 нояб 2021 13:0903 нояб 2021 14:35 #19447
от Gvinpin

zhukcbs пишет: не подгружается документ

А скрин случайно получился с пустой датой или так и пытаетесь загрузить?


______________________________
Лучше уже было (c)

Спасибо сказали: zhukcbs

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.


03 нояб 2021 17:0203 нояб 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:1903 нояб 2021 18:32 #19449
от zhukcbs

Дату документа заполнял та же история и пробелы в названии тоже убрал, и в яндес браузере пробовал — путь к файлу не отображается корректно и выходит сообщение о невозможности загрузить пустой документ. Пробовал разные файлы с другим расширением и размером, в том числе которые раньше подгружались.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.


04 нояб 2021 08:1604 нояб 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:5024 фев 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

Но мне нужен локальный полный путь к файлу. Как решить эту проблему?

Если это связано с проблемой безопасности браузера, каков должен быть альтернативный способ сделать это?

4b9b3361

Ответ 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, чтобы получить выбранное имя файла ввода без пути

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как составить словарик по английскому языку для начальной школы
  • Как найти дорогие конденсаторы
  • Как правильно составить обращение к губернатору области
  • Как найти настоящего мужика
  • Как исправить зрение у взрослых

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии