2010-08-27 30 views
102

ho provato ad aprire file conCome aprire un file disco locale con Javascript?

window.open("file:///D:/Hello.txt"); 

Il browser non consente l'apertura di un file locale in questo modo, probabilmente per motivi di sicurezza. Voglio usare i dati del file sul lato client. Come posso leggere il file locale in Javascript?

risposta

-1

Non è possibile. Nuovi browser come Firefox, Safari, ecc. Bloccano il protocollo 'file'. Funzionerà solo sui vecchi browser.

Dovrai caricare i file che desideri.

54

Il HTML5 fileReader facility consente di elaborare file locali, ma questi DEVONO essere selezionati dall'utente, non è possibile eseguire il rooting sul disco degli utenti in cerca di file.

Attualmente lo utilizzo con le versioni di sviluppo di Chrome (6.x). Non so quali altri browser lo supportano.

+3

destro, è ora possibile con HTML5. [Guarda qui] (http://www.html5rocks.com/en/tutorials/file/dndfiles/) –

+0

Utilizzando HTML5, è possibile selezionare un file da aprire, modificare il file e quindi salvare le modifiche al file ? –

+0

Una scansione rapida delle specifiche di riferimento (ultimo aggiornamento 2012-07-12) non mostra alcuna possibilità di scrittura di file, solo lettura. – HBP

0

Javascript non può in genere accedere ai file locali nei nuovi browser, ma l'oggetto XMLHttpRequest può essere utilizzato per leggere i file. Quindi è in realtà Ajax (e non Javascript) che sta leggendo il file.

Se si desidera leggere il file abc.txt, è possibile scrivere il codice come:

var txt = ''; 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function(){ 
    if(xmlhttp.status == 200 && xmlhttp.readyState == 4){ 
    txt = xmlhttp.responseText; 
    } 
}; 
xmlhttp.open("GET","abc.txt",true); 
xmlhttp.send(); 

Ora txt contiene il contenuto del file abc.txt.

+52

Ajax è JavaScript. –

+3

@TheMuffinMan e XML. (Asynchronus Javascript e XML) – thecoder16

+5

Questa risposta non è rilevante in quanto l'operatore ha chiesto come aprire i file che risiedono sul lato client, non i file che risiedono sul server. –

-2

Il metodo di richiesta xmlhttp non è valido per i file sul disco locale perché la sicurezza del browser non ci consente di farlo. ... browser location path.exe "append --allow-file-access-from-files.Questo è testato su chrome, tuttavia bisogna fare attenzione che tutte le finestre del browser dovrebbero essere chiuse e il codice dovrebbe essere eseguito dal browser aperto tramite questa scorciatoia.

163

Ecco un esempio utilizzando FileReader:

function readSingleFile(e) { 
 
    var file = e.target.files[0]; 
 
    if (!file) { 
 
    return; 
 
    } 
 
    var reader = new FileReader(); 
 
    reader.onload = function(e) { 
 
    var contents = e.target.result; 
 
    displayContents(contents); 
 
    }; 
 
    reader.readAsText(file); 
 
} 
 

 
function displayContents(contents) { 
 
    var element = document.getElementById('file-content'); 
 
    element.textContent = contents; 
 
} 
 

 
document.getElementById('file-input') 
 
    .addEventListener('change', readSingleFile, false);
<input type="file" id="file-input" /> 
 
<h3>Contents of the file:</h3> 
 
<pre id="file-content"></pre>


Spec

http://dev.w3.org/2006/webapi/FileAPI/

compatibilità del browser

01.235.
  • IE 10+
  • Firefox 3.6+
  • Chrome 13+
  • Safari 6.1+

http://caniuse.com/#feat=fileapi

+0

Come ottenere il nome file? – Hydro

+2

@SamusHands https://developer.mozilla.org/en-US/docs/Web/API/File/name –

+0

Grazie, ho provato e ha funzionato ('fileVariable.name'). – Hydro

Problemi correlati