2013-09-10 8 views
0

Я пытаюсь прочитать локальный файл из своей файловой системы с помощью javascript, но я просто не могу заставить его работать. Я пробовал следующие подходы ниже:Чтение локального файла с помощью javascript

//Approach 1 
function onInitFs(fs) { 
     alert(fs.root.fullPath); 
     fs.root.getFile('/test.txt', {}, function(fileEntry) { 

     // Get a File object representing the file, 
     // then use FileReader to read its contents. 
     fileEntry.file(function(file) { 
      var reader = new FileReader(); 

      reader.onloadend = function(e) { 
      alert(this.result); 
      }; 

      reader.readAsText(file); 
     }, errorHandler); 

     }, errorHandler); 

    } 

    //Approach 2 
if (window.XMLHttpRequest) 
      {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
      } 
     else 
      {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.open("GET","test.txt",false); 
      xmlhttp.send(); 
      xmlDoc=xmlhttp.responseText; 

Но для каждого подхода мне сказали, что файл не найден. Путь к самому файлу - «C: \ test.txt». Я пробовал добавить «файл:» к пути, но без успеха. Я пробовал каждый подход к IE, Mozilla и Chrome. Я посмотрел на каждый из нижеперечисленных тем, но до сих пор не могу найти ответ. Есть идеи?

xmlhttprequest for local files

Allow Google Chrome to use XMLHttpRequest to load a URL from a local file

XMLHttpRequest not working (blank page)

Read file:// URLs in IE XMLHttpRequest

Read a local file using javascript

+0

Где вы читаете этот файл? Я просто вижу AJAX. Вы скопировали правильный код? – Halcyon

+0

Не последние три строки подхода 2 читают файл? –

ответ

0

Для Gecko из MDN

Начиная с версии Gecko 1.9, файлы могут читать только некоторые другие файлы. В частности, файл может читать другой файл, только если родительский каталог исходного файла является каталогом-предком целевого файла. Однако каталоги нельзя загружать таким образом.

Это означает XMLHttpRequest в (например) Firefox, который имеет происхождение C:\foo\bar.html может получить доступ только C:\foo\x, где x некоторый путь.

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

+1

Я попытался разместить файл test.txt в том же каталоге, что и файл, который пытается выполнить чтение, но все равно не имеет успеха. Я являюсь частью приложения, где файлы создаются с использованием Java, а затем читают с использованием Javascript, поэтому мне придется автоматически загружать файлы на Java. Существуют ли серверные пакеты, поддерживающие такую ​​функциональность, которые также бесплатны? –

0

Не используйте file:// или какой-либо абсолютный путь, вы можете поместить файл в серверной среде, поэтому, возможно, это будет путь: localhost:8080/ROOT/test.txt

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

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