Как получить доступ и прочитать локальный файл со страницы html + javascript, работающей локально - PullRequest
9 голосов
/ 18 июня 2011

Я хотел бы написать небольшой HTML-файл, который будет запускаться локально и манипулировать небольшим текстовым файлом на моем компьютере. Мои требования:

  • Текстовый файл находится в каталоге на моем компьютере (test.txt)
  • HTML-файл находится в том же каталоге, что и текстовый файл (test.html)
  • Я хотел бы использовать javascript в html для чтения и записи текстового файла.

Возможно ли это вообще? Если да, как я могу читать и писать свой текстовый файл, используя JavaScript?

Ответы [ 3 ]

8 голосов
/ 18 июня 2011

Как уже говорилось в ответе Итая Моава, запись в локальный файл с локальным HTML-файлом, вероятно, будет проблемой, если вы не будете работать в режиме повышенных привилегий и иметь дополнительные возможности Javascript (которые позволяют сохранять локальные файлы) .

Однако доступ к локальному файлу из файла HTML полностью возможен. Ниже приведен пример кода.

mytext.txt

My local text file

local.html

<html>
<head>
<base href="file:///C:/path/to/your/folder/"/>
<script>
window.onload = function(){
    var iframe = document.createElement('iframe');
    iframe.id = 'iframe';
    iframe.style.display = 'none';
    document.body.appendChild(iframe);
    iframe.src = 'mytext.txt';
    setTimeout(function(){
        var text = document.getElementById('iframe').contentDocument.body.firstChild.innerHTML;
        alert(text);
    }, 1000);
}
</script>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>

Это выдаст предупреждение через 1 секунду после загрузки html-страницы (чтобы разрешить первой загрузке iframe) и будет содержать содержимое в файле mytext.txt.

Обратите внимание: если это обычный текст, Firefox обернет его элементом PRE, поэтому я и сделал firstChild. Также обратите внимание на использование элемента BASE, который указывает на ваш локальный каталог с вашими файлами.

8 голосов
/ 14 апреля 2013

Пример, приведенный Джаредом, работает отлично.Однако установка неизвестного времени просмотра не является привлекательной.Вместо этого присоедините событие ifload к iframe, вызывающему функцию, которая читает содержимое текстового файла и делает все возможное как можно скорее.

Вот пересмотренный пример:

<html>
<head>
<script>
function readfile() {
    alert(document.getElementById('iframe').contentDocument.body.firstChild.innerHTML);
}
</script>
</head>
<body>
<iframe id='iframe' src = 'test.txt' onload='readfile()'> </iframe>
<h1>Hello World!</h1>
</body>
</html>

ФайлКонечно, test.txt должен существовать в той же директории, что и указанный выше HTML-файл.

3 голосов
/ 18 июня 2011

Обычно это невозможно и может быть проблемой безопасности.
Однако, если вы используете некоторые плагины (ActiveX, расширения FF и т. Д.), Они могут позволить вам сделать это.
Существует также тема локального хранилища, которую вы можете использовать с самыми новыми браузерами.

Из ваших комментариев мне интересно, почему бы не использовать PHP / Ruby какой-либо другой серверный язык для этого? Они созданы специально для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...