2011-10-07 15 views
6

Questo codice funziona correttamente su jsFiddle ma non sul mio sistema. JsFiddleCodice funzionante Fine su jsFiddle ma non su Sistema locale

Ho controllato dal progetto (premendo Ctrl + Maiusc + Invio sulla jsFiddle), ha aggiunto questo codice per dirigere la sezione & modificata come di seguito:

window.addEvent('load', function() { 
    window.webkitRequestFileSystem(window.TEMPORARY, 2*1024*1024, function(fs) { 
     fs.root.getFile('test', {create: true}, function(fileEntry) { 
      alert(fileEntry.toURL()); 
      fileEntry.createWriter(function(fileWriter) { 
       var builder = new WebKitBlobBuilder(); 
       builder.append("Saurabh"); 
       builder.append("\n"); 
       builder.append("Saxena"); 

       var blob = builder.getBlob('text/plain'); 

       fileWriter.onwriteend = function() { 
        // navigate to file, will download 
        location.href = fileEntry.toURL(); 
       }; 
       fileWriter.write(blob); 
      }, function() {}); 
     }, function() {}); 
    }, function() {}); 
}); 
+2

non sono sicuro sono d'accordo con quello che è successo quando ho cliccato quel link ... – Blindy

+1

Il file viene creato nella memoria TEMPORARY e viene scaricato con i contenuti scritti. –

+0

Ragazzi, questo non è un codice dannoso, questo codice non danneggerà il vostro sistema. –

risposta

4

Ottiene un FileError.SECURITY_ERR perché non è consentito eseguire questo codice localmente. Vedresti l'errore se non avessi gestori di errori vuoti.

Si vedrà l'errore se si salva il seguente codice in un file locale ed eseguirlo in cromo:

<html> 
<script> 
function doit() { 

function errorHandler(e) { 
    var msg = ''; 

    switch (e.code) { 
    case FileError.QUOTA_EXCEEDED_ERR: 
     msg = 'QUOTA_EXCEEDED_ERR'; 
     break; 
    case FileError.NOT_FOUND_ERR: 
     msg = 'NOT_FOUND_ERR'; 
     break; 
    case FileError.SECURITY_ERR: 
     msg = 'SECURITY_ERR'; 
     break; 
    case FileError.INVALID_MODIFICATION_ERR: 
     msg = 'INVALID_MODIFICATION_ERR'; 
     break; 
    case FileError.INVALID_STATE_ERR: 
     msg = 'INVALID_STATE_ERR'; 
     break; 
    default: 
     msg = 'Unknown Error'; 
     break; 
    }; 

    console.log('Error: ' + msg); 
} 



window.webkitRequestFileSystem(window.TEMPORARY, 1024*1024, function(fs) { 
     fs.root.getFile('test', {create: true}, function(fileEntry) { 
      fileEntry.createWriter(function(fileWriter) { 
       var builder = new WebKitBlobBuilder(); 
       builder.append("Saurabh"); 
       builder.append("\n"); 
       builder.append("Saxena"); 

       var blob = builder.getBlob('text/plain'); 

       fileWriter.onwriteend = function() { 
        // navigate to file, will download 
        location.href = fileEntry.toURL(); 
       }; 
       fileWriter.write(blob); 
      }, errorHandler); 
     }, errorHandler); 
    }, errorHandler); 
} 
</script> 

<body onload="doit();"> 

</body> 
</html> 
+0

hai ragione quindi, quale potrebbe essere la soluzione possibile per questo. c'è un modo in cui posso ottenere il permesso di accedere ai file dall'utente stesso. –

+0

Per quanto ne so, non c'è modo di farlo funzionare con un 'file: //' url a meno che non si esegua il codice come estensione chrome '--allow-file-access-from-files' non ti aiuterà . Esegui in remoto e funzionerà, oppure crea un'estensione per Chrome ed eseguilo come codice privilegiato. –

+0

Posso creare un'estensione di Chrome, ma sei sicuro che lo stesso codice verrà eseguito anche qui –

1

Sul sistema locale

Google Chrome ha alcune limitazioni per file://. Puoi provare a eseguire Chrome con --allow-file-access-from-files. Forse aiuterà. Altrimenti è necessario mettere la pagina web su qualche server di sviluppo per testarlo.

Problemi correlati