2011-10-07 16 views
6

Este código funciona bien en jsFiddle pero no en mi sistema. JsFiddleCódigo que funciona bien en jsFiddle pero no en el sistema local

He comprobado del proyecto (pulsar Ctrl + Shift + Enter en jsFiddle), añadido el código para dirigir la sección & modificado, como a continuación:

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

No estoy seguro estoy de acuerdo con lo que acaba de ocurrir cuando hace clic en ese enlace ... – Blindy

+1

El archivo se crea en el almacenamiento TEMPORAL y se descarga con los contenidos escritos. –

+0

Chicos, este no es un código malicioso, este código no dañará su sistema. –

Respuesta

4

Obtiene un FileError.SECURITY_ERR porque no puede ejecutar este código localmente. Vería el error si no tuviera manejadores de errores vacíos.

Usted verá el error si guarda el código siguiente en un archivo local y lo ejecuta en 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

tiene razón así que, ¿cuál podría ser la posible solución? hay alguna manera por la cual puedo obtener permiso para acceder a los archivos del usuario. –

+0

Por lo que sé, no hay forma de hacer que esto funcione con una url 'file: //' a menos que ejecutes el código como una extensión de cromo '--allow-file-access-from-files' no te ayudará . Ejecútelo de forma remota y funcionará, o construya una extensión de Chrome para él y ejecútelo como un código privilegiado. –

+0

Puedo construir una extensión de Chrome, pero ¿está seguro de que el mismo código se ejecutará allí también? –

1

en el sistema local

Google Chrome tiene algunas restricciones para file://. Puede intentar ejecutar Chrome con --allow-file-access-from-files. Quizás ayude. De lo contrario, debe colocar la página web en algún servidor de desarrollo para probarla.

Cuestiones relacionadas