2012-01-09 13 views
7

Z tego ciągu otrzymujemy dane z DataURL, jaki jest najlepszy sposób pobrania tego pliku jako pliku?Pobieranie pliku z DataURL w JavaScript

Do tej pory używam podstawowego window.open("myDataURL");, ale nie jestem w stanie zmienić nazwy pliku w ten sposób.

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

Zastanawiam się, czy istnieje sposób na poprawne przetwarzanie tych danych.

+0

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

+0

Widziałem to pytanie przed, nazwa pliku staje się „rVPjLUq1.part”, tak jakbym na przykładzie Napisałem powyżej. – eBergamo

+0

Jak pisze Wladimir Palant, problem został [omówiony na liście dyskusyjnej W3C] (http://lists.w3.org/Archives/Public/uri/2010Feb/thread.html#msg58), ale "to nie wydaje się, że dotarło do każdej specyfikacji, nie mówiąc już o implementacjach przeglądarki. " Obawiam się, że nie było żadnych postępów w tej sprawie. – user123444555621

Odpowiedz

0

Spróbuj tego:

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

Ale to tylko przypuszczenie z googling wokół i może być zależny od przeglądarki. Prawdziwa odpowiedź na to pytanie brzmi: Nie możesz - Patrz: http://www.ietf.org/rfc/rfc2397 dla odniesienia, nie ma nic w specyfikacji, aby obsługiwać nazwę pliku.

+0

Tak, to nie zadziałało. Czy to jest przeznaczone wyłącznie do wykorzystania obrazów? Ponieważ nie jest to duża zaleta, jeśli nie można ponownie użyć tej "wartości" i odtworzyć z nią plik. Wciąż szukam odpowiedzi, aby rozwiązać ten problem ... używając JSP lub Java. Ale nie widzę żadnych linków dotyczących sposobu obsługi danych w ten sposób. – eBergamo

+0

Dane identyfikatory URI są przeznaczone do obsługi nieprzetworzonych danych w sposób kompatybilny z URI. Podobnie jak na przykład osadzanie obrazów lub tekstu w innym dokumencie, który w przeciwnym razie wymagałby zewnętrznego elementu powiązanego. – bardiir

+0

Rozumiem. W naszej metodzie pobierania zawartości pliku używamy naszego read.readAsDataURL (file); ... Jeśli zamiast tego używam go readAsBinaryString, czy będę mógł poprawnie odtworzyć moje pliki (pdf, xls, docs)? – eBergamo

3

możesz dodać atrybut pobierz do elementu zakotwiczenia. próbki:

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

To nie obsługuje w IE – Nipuna

+0

Tylko chrome może z tym pracować. – cuixiping

+0

Nie odpowiada również na pytanie OP o podanie nazwy pliku do atrybutu window.open (z Javascript, a nie HTML). – srlm