para - reproductor html5
Extensión de Chrome: descarga/exporta contenido creado "sobre la marcha" (3)
Debo permitir que el usuario descargue un archivo creado sobre la marcha a partir de algunos datos contenidos en la extensión, pero no quiero hacer esto en el servidor.
Como ejemplo del mundo real: hay una variable que contiene el texto "hello world". Quiero que el usuario pueda descargar / crear un archivo .TXT
que contenga dicho texto.
Es posible ?
-editado el 30 de octubre de 2010-
Soluciones hasta el momento:
window.saveAs - no funciona en absoluto
createObjectURL - funciona, pero el nombre de archivo y otras opciones no se pueden personalizar todavía
copiar datos al portapapeles : funciona, pero se requieren demasiados pasos para el usuario
cree un documento de GoogleDocs ; podría funcionar, pero necesita jugar con la API y Oauth
-editado 15 de abril de 2011
Parece que las cosas están mejorando: https://github.com/eligrey/FileSaver.js
Pero Chrome 14+ todavía es un poco extraño sobre los nombres de archivo.
Creo que la única forma es llamar al diálogo guardar a través de flash, ver la biblioteca Downloadify .
No creo que esto sea posible por razones de seguridad
En el Grupo de Google Google-Extensions he encontrado este ejemplo de trabajo: (Lo he modificado para que funcione desde el menú emergente)
BuiltBlob = new BlobBuilder("");
BuiltBlob.append("Hello, world");
BlobToSave = BuiltBlob.getBlob();
chrome.tabs.create({''url'': createObjectURL(BlobToSave), ''selected'': false});
Pero el nombre del archivo no está establecido, terminando con algo como cf8a56bf-d724-4b97-b10f-e252961135bd
En los documentos de The W3C ( http://dev.w3.org/2009/dap/file-system/file-writer.html ) Encontré este ejemplo que no funciona :
var bb = new BlobBuilder();
bb.append("Lorem ipsum");
var fileSaver = window.saveAs(bb.getBlob(), "test_file");
fileSaver.onwriteend = myOnWriteEnd;
pero window.saveAs
no parece existir.
Buscando en Google he encontrado referencias obsoletas de Google Gears, pero nada más, ¿tal vez porque estoy tratando con algo demasiado nuevo para tener la documentación adecuada?
¿Hay alguna manera de establecer el nombre de archivo / mime-type en el primer ejemplo?