2011-05-30 12 views
5

Me gustaría generar un archivo de texto en el javascript de forma dinámica, luego ofrecerlo para su descarga. Actualmente puedo conseguir este trabajo en un grado con cualquiera de las siguientes soluciones:¿Cómo puedo generar un archivo y ofrecerlo para descargar en javascript normal?

content = "abc123"; 
document.location = "data:text/octet-stream," + encodeURIComponent(content); 

O

content = "abc123";  
var bb = new BlobBuilder(); 
bb.append(content); 
var blob = bb.getBlob(); 
blob = blob.slice(0, blob.size, 'text/octet-stream'); 
var fr = new FileReader(); 
fr.onload = function() {document.location = this.result;} 
fr.readAsDataURL(blob); 

Sin embargo, estas dos soluciones, cuando aparezca el cuadro de descarga, sólo ofrecerá un nombre de archivo por defecto de 'descargar' en el guardar como diálogo.

Mi pregunta es, básicamente, ¿cómo puedo cambiar a un nombre de archivo específico, por ejemplo, 'readme.txt' o 'scene.obj'

También tenga en cuenta el tipo de datos que antes era 'text/plain', sin embargo, si este se usa, el documento cambia al nuevo documento de texto en lugar de ofrecerlo para su descarga (como parece hacer el texto/octet-stream).

No quiero una solución flash, solo sugerencias de javascript/html5.

Cheers, Josh

+0

posibles duplicado de [¿Hay alguna forma de especificar un nombre de archivo sugerido al usar datos: URI?] (http://stackoverflow.com/questions/283956/is-there-any-way-to-specify-a-suggested-filename- when-using-data-uri) –

+0

Esto parece ser un duplicado del enlace sugerido, no estoy seguro de por qué no lo encontré cuando busqué. Las personas que quieran una respuesta a esta pregunta deben seguir el enlace. –

Respuesta

4

Para ello, tendrá que utilizar FileSaver de FileAPI: Aclaración de escritor. Por ahora, es solo un borrador, y según mailing list answer aún no está implementado en navegadores.

Usted puede ver por ejemplo en un chromium issue para obtener la información más actualizada sobre el progreso de la implementación

UPD 08/02/2013: Desde entonces he encontrado una project que proporciona una interfaz FileSaver usando truquitos

+1

IE10 presenta msSaveOrOpenBlob y msSaveBlob. Estos son dos métodos disponibles en IE10 que permiten a los sitios pedirle al usuario que guarde un blob en su computadora. Más en http://blogs.msdn.com/b/ie/archive/2012/01/27/creating-files-through-blobbuilder.aspx – Alexander

0

creo que usted debe comprobar: jQuery Table to CSV export

+0

Estas soluciones parecen depender de las secuencias de comandos del lado del servidor. Estoy tratando de mantenerme al lado del cliente. Gracias por la sugerencia de todos modos. –

Cuestiones relacionadas