2012-01-09 16 views
7

Da questa stringa arriviamo da DataURL, qual è il modo migliore per scaricarlo come file?Download di file da DataURL in JavaScript

Finora quello che ho ottenuto è stato utilizzando un semplice window.open("myDataURL");, ma non sono in grado di cambiare il nome del file in questo modo.

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

Mi chiedevo se c'è un modo per gestire correttamente questi dati.

+0

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

+0

Ho visto questa domanda prima, il nome del file diventa "rVPjLUq1.part", proprio come se stessi usando l'esempio Ho postato sopra. – eBergamo

+0

Come scrive Wladimir Palant, il problema è stato [discusso sulla mailing list del W3C] (http://lists.w3.org/Archives/Public/uri/2010Feb/thread.html#msg58), ma "questo non sembra aver raggiunto tutte le specifiche finora, per non parlare delle implementazioni del browser. " Temo che non ci siano stati progressi in questa materia. – user123444555621

risposta

0

Prova questa:

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

Ma questa è solo una supposizione da googling in giro e potrebbe essere il browser-dipendente. La vera risposta a questo è, non è possibile - Vedere http://www.ietf.org/rfc/rfc2397 per riferimento, non c'è nulla nelle specifiche per supportare un nome di file.

+0

Sì, non ha funzionato. È pensato solo per l'utilizzo delle immagini? Perché non è un grande vantaggio se non è possibile riutilizzare questo "valore" e ricreare un file con esso. Sto ancora cercando risposte per risolvere questo problema ... usando JSP o Java. Ma non riesco a vedere nessun link su come gestire dataURL in questo modo. – eBergamo

+0

Gli URI dati sono pensati per gestire i dati grezzi in modo compatibile con URI. Come ad esempio l'incorporamento di immagini o testo in un altro documento che altrimenti si aspetterebbe un elemento collegato esterno. – bardiir

+0

Vedo. Nel nostro metodo per ottenere il contenuto del file, usiamo il nostro reader.readAsDataURL (file); ... Se lo uso readAsBinaryString, sarò in grado di ricreare i miei file (pdf, xls, docs) correttamente dopo? – eBergamo

3

è possibile aggiungere un attributo all'elemento di ancoraggio. . campione:

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

Questo non supporta in IE – Nipuna

+0

Solo Chrome può funzionare con questo ora. – cuixiping

+0

Inoltre non affronta la domanda dell'OP di specificare un nome di file per l'attributo window.open (da Javascript, non HTML). – srlm