2010-10-23 20 views
7

Necesito dejar 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 .Extensión de Chrome: Descargar/exportar contenido creado "sobre la marcha"

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 Oct 30, 2010-

soluciones hasta ahora:

window.saveAs - no funciona en absoluto

createObjectURL - funciona, pero el nombre de archivo y otras opciones pueden no se ha personalizado aún

copie los datos al portapapeles - funciona, pero hay demasiados pasos se requiere que el usuario

crear un documento de Google Docs - podría funcionar, pero necesita jugar con el API y Oauth

-Editado Abr 15, 2011

parece que las cosas están mejorando: https://github.com/eligrey/FileSaver.js

Pero Chrome 14+ sigue siendo un poco extraño sobre los nombres de archivo.

+0

Oye, ¿descubriste cómo hacer esto? – SLearner

+0

Creo que aquí se describe la forma más simple y actual de la manera más moderna: http://stackoverflow.com/a/27928869/193017 –

Respuesta

2

Creo que la única forma es llamar al cuadro de diálogo Guardar mediante flash, consulte la biblioteca Downloadify.

+0

Hace algunas horas no tenía ni idea de cómo manejar esto, y ahora ya tengo dos formas, ¡gracias! – Omiod

+0

Finalmente probé Downloadify, y no funciona debido al entorno limitado de seguridad de flash. A partir de los documentos: "** Importante El SWF ha sido compilada para su uso sólo en línea Prueba de la ruta del archivo (es decir, file: //)!.. No va a funcionar, ya que violará el entorno limitado de seguridad **" I tampoco puedo usar la opción Blob, ya que solo funciona en las últimas versiones de desarrollo de Chrome, así que por ahora no puedo proporcionar ninguna función de exportación a los usuarios de la extensión ... :( – Omiod

+0

La última copia de Downloadify está disponible en la Web Archivo: https://web.archive.org/web/20101023200441/http://downloadify.info/ que a su vez se refiere a https://github.com/dcneiner/Downloadify –

1

No creo que esto es posible debido a razones de seguridad

+0

Esta es una pista falsa de seguridad.No hay forma posible de que sea menos seguro que descargar algún binario arbitrario de un servidor remoto (que está permitido universalmente) – Cuadue

2

En las extensiones de cromo-Google Grupo I han encontrado este ejemplo de trabajo: (he modificado para que funcione desde el pop-up)

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 así como cf8a56bf-d724-4b97-b10f-e252961135bd

en los documentos las W3C (http://dev.w3.org/2009/dap/file-system/file-writer.html) he encontrado este ejemplo no funciona:

var bb = new BlobBuilder(); 
bb.append("Lorem ipsum"); 
var fileSaver = window.saveAs(bb.getBlob(), "test_file"); 
fileSaver.onwriteend = myOnWriteEnd; 

pero window.saveAs parece que no existe.

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?

+0

Bueno, HTML5 ni siquiera está terminado como una especificación, y menos aún está listo para la implementación a gran escala en la web. Desafortunadamente, HTML5 es 'la próxima gran cosa' un poco demasiado pronto. No es sorprendente que el escritor de archivos no funcione todavía. Siempre puedes verificar HTML5test para ver qué es lo que tu navegador soporta hasta ahora. – Xorlev

Cuestiones relacionadas