2012-01-09 22 views
7

De esta cadena que obtenemos de DataURL, ¿cuál es la mejor manera de descargar esto como un archivo?Descargando archivo de DataURL en JavaScript

Hasta ahora lo que obtuve fue utilizar un window.open("myDataURL"); básico, pero no puedo cambiar el nombre del archivo de esta manera.

window.open('data:application/msword;base64,0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAA 
      PgADAP7/CQAGAAAAAAAAAAAAAAACAAAANQAAAAAAA 
      AAAEAAANwAAAAIAAAD+////AAAAADQAAABsAA/', 
      '_blank','height=300,width=400'); 

Me preguntaba si hay alguna forma de manejar estos datos correctamente.

+0

Ver http://stackoverflow.com/a/6465780/27862 – user123444555621

+0

que he visto esta pregunta antes, el nombre del archivo se convierte en "rVPjLUq1.part", tal y como si estuviera usando el ejemplo Publiqué arriba. – eBergamo

+0

Como escribe Wladimir Palant, el problema ha sido [discutido en la lista de correo del W3C] (http://lists.w3.org/Archives/Public/uri/2010Feb/thread.html#msg58), pero "esto no parece que ha llegado a ser una especificación hasta ahora, y mucho menos implementaciones de navegador ". Me temo que no ha habido ningún progreso en ese asunto. – user123444555621

Respuesta

0

Prueba esto:

data:application/msword;fileName=test.doc;base64,0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAACAAAANQAAAAAAAAAAEAAANwAAAAIAAAD+////AAAAADQAAABsAA/ 

Pero esto es sólo una suposición de googlear alrededor y podría ser dependiente del navegador. La verdadera respuesta a esto es no se puede - Ver http://www.ietf.org/rfc/rfc2397 como referencia, no hay nada en la especificación que soporte un nombre de archivo.

+0

Sí, no funcionó. ¿Es solo para el uso de imágenes? Porque no es una gran ventaja si no puede reutilizar este "valor" y volver a crear un archivo con él. Todavía estoy buscando respuestas para solucionar este problema ... usando JSP o Java también. Pero no puedo ver ningún enlace sobre cómo manejar dataURL de esta manera. – eBergamo

+0

Los URI de datos están pensados ​​para manejar datos brutos en una forma compatible con URI. Como, por ejemplo, la incrustación de imágenes o texto en otro documento que de otro modo esperaría un elemento vinculado externo. – bardiir

+0

Ya veo. En nuestro método para obtener el contenido del archivo, utilizamos nuestro reader.readAsDataURL (archivo); ... Si lo uso readAsBinaryString en su lugar, ¿podré volver a crear mis archivos (pdf, xls, docs) correctamente? – eBergamo

3

puede agregar un descargar atributo al elemento de anclaje. muestra:

<a download="abcd.zip" href="data:application/stream;base64,MIIDhTCCAvKg........">download</a> 
+1

Esto no es compatible con IE – Nipuna

+0

. Solo Chrome puede trabajar con esto ahora. – cuixiping

+0

Tampoco aborda la pregunta del OP de especificar un nombre de archivo para el atributo window.open (de Javascript, no de HTML). – srlm

Cuestiones relacionadas