2011-05-30 9 views
5

Chciałbym dynamicznie wygenerować plik tekstowy w javascript, a następnie zaoferować go do pobrania. Obecnie mogę dostać tej pracy do pewnego stopnia z jedną z następujących rozwiązań:Jak mogę wygenerować plik i zaoferować go do pobrania w prostym javascript?

content = "abc123"; 
document.location = "data:text/octet-stream," + encodeURIComponent(content); 

LUB

content = "abc123";  
var bb = new BlobBuilder(); 
bb.append(content); 
var blob = bb.getBlob(); 
blob = blob.slice(0, blob.size, 'text/octet-stream'); 
var fr = new FileReader(); 
fr.onload = function() {document.location = this.result;} 
fr.readAsDataURL(blob); 

Jednak oba te rozwiązania, gdy pojawi się okno pobierania, tylko będzie oferować domyślną nazwę "pobierz" w zapisaniu jako dialog.

Moje pytanie jest w zasadzie, jak mogę to zmienić do konkretnego pliku na przykład „readme.txt” lub „scene.obj”

Należy również zwrócić uwagę na typ danych był wcześniej „text/plain” Jednakże, jeśli to jest używany, dokument przełącza się do nowego dokumentu tekstowego zamiast oferować go do pobrania (wydaje się, że robi to tekst/strumień oktetowy).

Nie chcę rozwiązania Flash, tylko sugestie javascript/html5 proszę.

Wiwaty, Josh

+0

możliwe duplikat [Czy jest jakiś sposób na podanie sugerowanej nazwy pliku podczas używania danych: URI?] (http://stackoverflow.com/questions/283956/is-there-any-way-to-specify-a-suggested-filename- when-using-data-uri) –

+0

To wydaje się być duplikatem sugerowanego linku, nie wiem, dlaczego nie znalazłem go podczas wyszukiwania. Osoby, które chcą uzyskać odpowiedź na to pytanie, powinny kliknąć link. –

Odpowiedz

4

Do tego trzeba będzie użyć FileSaver z FileAPI: Specyfikacja Writer. Na razie jest to tylko wersja robocza, a według mailing list answer nie jest jeszcze zaimplementowana w przeglądarkach.

można oglądać na przykład na chromium issue aby uzyskać aktualne informacje na bieżąco o postępach w realizacji

UPD 02.08.2013: I od tego czasu znalazł project, który zapewnia interfejs FileSaver za pomocą zgrabnych trików

+1

IE10 zawiera funkcje msSaveOrOpenBlob i msSaveBlob. Są to dwie metody dostępne w IE10, które pozwalają stronom prosić użytkownika o zapisanie bloba na swoim komputerze. Więcej na http://blogs.msdn.com/b/ie/archive/2012/01/27/creating-files-through-blobbuilder.aspx – Alexander

0

myślę, że należy sprawdzić: jQuery Table to CSV export

+0

Te rozwiązania wyglądają tak, jakby były zależne od skryptów po stronie serwera, staram się trzymać po stronie klienta. Dzięki za sugestię. –

Powiązane problemy