Chrome extensión: Descargar contenido / exportación creado “sobre la marcha”
-
25-09-2019 - |
Pregunta
Hay que dejar que el usuario descarga un archivo creado sobre la marcha de algunos datos contenidos en la extensión, pero no quiero hacer esto del lado del servidor.
Como un ejemplo del mundo real: Hay una variable que contiene el "hola mundo" texto. Quiero que el usuario sea capaz de descargar / crear un archivo que contiene .TXT
dicho texto.
¿Es posible?
-Editado 30 de oct 2010 -
Las soluciones hasta ahora:
window.saveAs - no funciona en absoluto
createObjectURL - obras, pero el nombre de archivo y otras opciones no se pueden personalizar aún
copiar datos al portapapeles - obras, pero demasiados pasos son necesarios para el usuario
crear un documento de Google Docs - podría funcionar, pero necesita jugar con el API y Oauth
-Editado 15 Abr, 2011
Parece que las cosas están mejorando: https://github.com/eligrey/FileSaver.js
Pero Chrome 14+ es todavía un poco extraño en los nombres de archivo.
Solución
Creo que la única manera es llamar a Guardar de diálogo a través de flash, consulte Downloadify biblioteca.
Otros consejos
En las extensiones de cromo-Google Grupo I haber encontrado este ejemplo de trabajo: (lo he modificado para trabajar desde el pop-up)
BuiltBlob = new BlobBuilder("");
BuiltBlob.append("Hello, world");
BlobToSave = BuiltBlob.getBlob();
chrome.tabs.create({'url': createObjectURL(BlobToSave), 'selected': false});
Sin embargo, el nombre del archivo no está establecido, terminando con algo así como cf8a56bf-d724-4b97-b10f-e252961135bd
En la documentación de la W3C ( http: // dev. w3.org/2009/dap/file-system/file-writer.html ) he encontrado este no funciona ejemplo:
var bb = new BlobBuilder();
bb.append("Lorem ipsum");
var fileSaver = window.saveAs(bb.getBlob(), "test_file");
fileSaver.onwriteend = myOnWriteEnd;
window.saveAs
pero no parece que existe.
googleing torno a que he encontrado referencias anticuado Google Gears, pero nada más, tal vez porque estoy tratando con algo demasiado nuevo para tener la documentación adecuada?
¿Hay una manera de establecer el nombre del archivo / mime-tipo con el primer ejemplo?
No creo que esto es posible debido a razones de seguridad