2013-11-07 5 views
1

Мне нужно прочитать файл с определенного пути на жестком диске моего компьютера с помощью Javascript (или с помощью JQuery, это не имеет значения). Я искал в Google, но все, что я нашел, не очень полезно. Ближе всего, что у меня есть:Прочитать файл из локального каталога в Javascript

function readSingleFile(evt) { 
    //Retrieve the first (and only!) File from the FileList object 
    var f = evt.target.files[0]; 

    if (f) { 
     var r = new FileReader(); 
     r.onload = function(e) { 
      var contents = e.target.result; 
     alert("Got the file.\n" 
       +"name: " + f.name + "\n" 
       +"type: " + f.type + "\n" 
       +"size: " + f.size + " bytes \n" 
       + "starts with: " + contents.substr(1, contents.indexOf("\n")) 
     ); 
     } 
     r.readAsText(f); 
    } else { 
     alert("Failed to load file"); 
    } 
    } 

    document.getElementById('fileinput').addEventListener('change', readSingleFile, false); 

Это позволяет выбрать файл с помощью выбора файлов, а затем отобразить содержимое файла. Мне нужно сделать программу, которая читает файл, в котором вы явно указываете местоположение, например c: \ files \ test.txt, и печатает содержимое файла test.txt.

I Googled это очень много успеха, любая помощь приветствуется.

+3

Почему вы думаете, что браузер должен дать вам доступ к своим файлам на жестком диске ?! – gdoron

+0

Кажется, вы манипулируете Файловым Objcet, прикрепленным к форме, JS не имеет возможности захватывать плоские файлы в файловой системе, для этого вам понадобится узел. –

+0

Мне просто нужно очень небольшое приложение для чтения некоторых файлов и отображения данных, поэтому я хотел сделать это в Интернете, но без веб-серверов, чтобы избежать осложнений, поэтому я думал о Javascript. Так что это невозможно? – Vito

ответ

8

Кто-то исправит меня, если я ошибаюсь, но насколько я знаю, это невозможно в JavaScript из-за проблем с безопасностью.

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

Пользователь должен иметь возможность выбирать файл из своей файловой системы сознательно.

+0

Спасибо за ответ, кажется, что это правильный ответ, я сделаю приложение на другом языке, чтобы избежать проблем. – Vito

+0

хорошо, но его возможно только в хромированном корпусе. Google webkitdirectory –

0

Это действительно невозможно или рекомендуется по соображениям безопасности.

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

Предполагая, что вы используете Chrome, вы можете создать ярлык для хрома и добавьте

--allow-доступ к файлам-от-файлов

к целевой области.

Затем вам нужно будет запустить этот ярлык и открыть html из этого экземпляра браузера.

В идеале вы должны разместить файловый сервер или выбрать опцию выбора файла.

+1

Спасибо за ответ, кажется, сложнее, чем я думал, поэтому я собираюсь использовать другой язык для этого небольшого приложения. – Vito

0

Доступ к файловой системе пользователей недоступен.

Однако с помощью API FileSystem вы можете получить временную или постоянную частную файловую систему, в которой вы можете хранить материал для своего приложения (например, кешированные изображения). Затем вы можете объединить этот API с Файловым API, чтобы позволить пользователю перетаскивать файлы в ваше приложение из файлов пользователей.

В зависимости от вашей заявки это может быть или не быть удовлетворительным.

Учебник по FileSystem API: http://www.html5rocks.com/en/tutorials/file/filesystem/

Учебник по API Файл: http://www.sitepoint.com/html5-file-drag-and-drop/

Смежные вопросы