2015-06-02 31 views
5

Chciałbym zmodyfikować this code, aby działał tylko z określonym plikiem, ale nie mogę znaleźć prawidłowego parametru adresu URL i wszystkich przykładów kodu, które mam znaleźć okno dialogowe wyboru pliku.Jak otworzyć lokalny plik za pomocą Javascript FileReader()

<!DOCTYPE html> 
<html> 
    <head> 
    <title>reading file</title> 
    <script type="text/javascript"> 

     var reader = new FileReader(); 

     function readText(that){ 

      if(that.files && that.files[0]){ 
       var reader = new FileReader(); 
       reader.onload = function (e) { 
        var output=e.target.result; 

        //process text to show only lines with "@":    
        output=output.split("\n").filter(/./.test, /\@/).join("\n"); 

        document.getElementById('main').innerHTML= output; 
       };//end onload() 
       reader.readAsText(that.files[0]); 
      }//end if html5 filelist support 
     } 
</script> 
</head> 
    <body> 
    <input type="file" onchange='readText(this)' /> 
    <div id="main"></div> 
    </body> 

Dlaczego to nie działa, gdy mogę zmienić kod:

<body> 
    <input type="file" onchange='readText(this)' /> 
    <div id="main"></div> 
</body> 

do:

<body onload="readText('file:///C:/test.txt')"> 
    <div id="main"></div> 
</body> 
+2

nie można odczytać plików lokalnych tak, użytkownik musi użyć okna dialogowego wyboru pliku lub zrobić przeciągnij plik i upuść w celu przeglądarce, aby dać Ci dostęp do lokalnych plików, w przeciwnym razie będzie być ogromnym problemem bezpieczeństwa –

Odpowiedz

6

Przeglądarki nie dają takiej możliwości ze względów bezpieczeństwa. Nie możesz czytać plików lokalnych, dopóki użytkownik nie wybierze określonego pliku w oknie dialogowym wyboru pliku (lub nie zrobi tego za pomocą przeciągania i upuszczania). Dlatego wszystkie przykłady kodu korzystają z okna wyboru plików.

Więcej szczegółów Does HTML5 allow you to interact with local client files from within a browser