Raaditya Ответов: 4

Чтение файла локального диска с помощью веб-приложения


Всем Привет,

Я предполагаю, что прочитаю файл локального диска, но мне не разрешили использовать html-тег Input type ="file", так как путь к файлу будет жестко закодирован в коде, например., "
H:\Test\ 
".

Я перепробовал много вариантов в HTML и Javascript, но не смог добиться успеха. Пожалуйста, помогите мне.

Что я уже пробовал:




<title>загрузка и загрузка файла






Содержание:

  


функция readFile(файл) {
return new Promise((resolve, reject) => {
пусть fr = new FileReader();
фр.событий onload = х=&ГТ; решение(фр.результат);
fr.readAsText(файл);
})}

асинхронная функция read(input) {
// оповещения(вход.файлы);
сообщение.через свойство innerText = жду функцию ReadFile(вход.файлы[0]);
}

phil.o

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

4 Ответов

Рейтинг:
7

Raaditya

<pre lang="HTML"><button onclick="openFile(dispFile)">Open a file</button>

            

<script>
            function dispFile(contents) {                
                document.getElementById('contents').innerHTML=contents;
                alert(contents);
            }
            function clickElem(elem) {                
                var eventMouse = document.createEvent("MouseEvents");
                eventMouse.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                elem.dispatchEvent(eventMouse);
            }
            function openFile(func) {
                readFile = function(e) {
                    var file = e.target.files[0];
                    if (!file) {
                        return;
                    }
                    var reader = new FileReader();
                    reader.onload = function(e) {
                        var contents = e.target.result;
                        fileInput.func(contents);
                    }                    
                    reader.readAsText(file);
                }
                fileInput = document.createElement("input");
                fileInput.type='file';
                fileInput.style.display='none';
                fileInput.onchange=readFile;
                fileInput.func=func;
                document.body.appendChild(fileInput);
                clickElem(fileInput);
            }
        </script>


Raaditya

Я надеюсь, что это может кому-то помочь в будущем. Но было бы здорово, если бы кто-то помог выбрать несколько файлов в папке для копирования/перемещения ее в другой каталог. Примечание: приведенный выше код считывает файл и распечатывает его.

Рейтинг:
24

RickZeeland

Смотрите пример здесь, он также имеет кнопку "Запустить фрагмент кода", чтобы попробовать его: Как открыть локальный дисковый файл с помощью JavaScript? - переполнение стека[^]
Обратите внимание, что это работает только с помощью диалогового окна выбора файла, а не с жестко закодированной строкой !


Raaditya

Ваша помощь была очень признательна, этот код делает свою работу. Единственное, что мы не могли выбрать несколько файлов, так это то, что мы можем выбрать несколько файлов. У вас есть какие-нибудь идеи, сэр?

Рейтинг:
1

Dave Kreskowiak

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


Raaditya

Спасибо, что уделили мне время. На самом деле это так, но с клиентским взаимодействием/разрешением. Приведенный ниже код показывает эту работу.

Рейтинг:
0

Patrice T

Цитата:
Я перепробовал много вариантов в HTML и Javascript, но не смог добиться успеха.

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


Raaditya

то, что ты сказал, правильно. Проблема в том, что когда вы готовите настольное приложение с технологией с открытым исходным кодом, вы вынуждены делать какие-то вещи, такие как копирование/перемещение файлов на локальном диске клиента, например, загружать файлы патчей с веб-сервера и находить их на диске клиента. Затем файлы необходимо переместить в базу данных, расположенную на клиентской машине. Не уверен, что все вышесказанное было ясно. Но именно так я и застрял :(