2010-10-23 4 views
7

Ich muss den Benutzer eine Datei im Hintergrund von einigen Daten in der Erweiterung erstellt herunterladen lassen, aber ich möchte diese Server-Seite nicht tun .Chrome-Erweiterung: Download/Export von Inhalten "on the fly" erstellt

Wie ein Beispiel aus der Praxis: Es gibt eine Variable mit dem Text "Hallo Welt". Ich möchte, dass der Benutzer in der Lage ist, eine .TXT Datei mit diesem Text herunterzuladen/zu erstellen.

Ist es möglich?

verarbeiteten Oct 30, 2010-

Lösungen bisher:

window.saveAs - nicht bei allen Arbeits

createObjectURL - funktioniert, aber die Dateinamen und andere Optionen können noch nicht angepasst

Daten in Zwischenablage kopieren - funktioniert, aber zu viele Schritte dem Benutzer ein Dokument GoogleDocs

erforderlich sind schaffen - funktionieren könnte, aber mit der API und OAuth

verarbeiteten 15. April Looks 2011

braucht Unordnung wie die Dinge zu verbessern: https://github.com/eligrey/FileSaver.js

Aber Chrome 14+ ist immer noch ein bisschen komisch über Dateinamen.

+0

Hey, hast du herausgefunden, wie das geht? – SLearner

+0

Ich denke die einfachste und derzeit modernste Art ist hier beschrieben: http://stackoverflow.com/a/27928869/193017 –

Antwort

2

Ich denke, der einzige Weg ist, Speichern Dialog durch Flash aufrufen, siehe Downloadify Bibliothek.

+0

Vor ein paar Stunden hatte ich keine Ahnung, wie ich damit umgehen sollte, und jetzt habe ich schon zwei Wege, danke! – Omiod

+0

Ich habe Downloadfy schließlich getestet, und es funktioniert nicht aufgrund der Flash-Sicherheits-Sandbox. Aus der Dokumentation: "** Wichtig! Die SWF wurde nur für den Online-Gebrauch kompiliert. Testen aus dem Dateipfad (dh Datei: //) wird nicht funktionieren, da es die Sicherheits-Sandbox verletzen würde." I Die Blob-Option kann auch nicht verwendet werden, da sie nur in den neuesten Chrome-Versionen funktioniert. Daher kann ich den Erweiterungsbenutzern derzeit keine Exportfunktion zur Verfügung stellen ... :( – Omiod

+0

Die letzte Version von Downloadify ist im Web verfügbar Archiv: https://web.archive.org/web/20101023200441/http://downloadify.info/ was sich wiederum auf https://github.com/dcneiner/Downloadify bezieht –

1

Ich glaube nicht, das ist möglich, weil aus Sicherheitsgründen

+0

Dies ist eine Sicherheit Red Hering.Es gibt keine Möglichkeit, dass es weniger sicher ist als das Herunterladen einer beliebigen Binärdatei von einem Remote-Server (was allgemein erlaubt ist). – Cuadue

2

In den Chromium-Erweiterungen Google Gruppe I dieses Arbeitsbeispiel gefunden hat: (Ich habe es geändert aus dem Pop-up arbeiten)

BuiltBlob = new BlobBuilder(""); 
BuiltBlob.append("Hello, world"); 
BlobToSave = BuiltBlob.getBlob(); 
chrome.tabs.create({'url': createObjectURL(BlobToSave), 'selected': false}); 

Aber der Dateiname ist nicht gesetzt, mit etwas enden wie cf8a56bf-d724-4b97-b10f-e252961135bd

Sie auf dem W3C-docs (http://dev.w3.org/2009/dap/file-system/file-writer.html) ich dieses nicht funktioniert Beispiel gefunden habe:

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

aber window.saveAs scheint nicht zu existieren.

Googleing herum Ich habe veraltete Google Gears-Verweise gefunden, aber sonst nichts, vielleicht weil ich es mit etwas zu Neuem zu tun habe, um die richtige Dokumentation zu haben?

Gibt es eine Möglichkeit, den Dateinamen/Mime-Typ auf das erste Beispiel zu setzen?

+0

Nun, HTML5 ist noch nicht einmal als Spezifikation fertig, geschweige denn bereit für die vollständige Implementierung im Web. Leider ist HTML5 "das nächste große Ding" nur ein bisschen zu früh. Es ist nicht überraschend, dass Dateischreiber noch nicht funktioniert. Sie können HTML5test immer überprüfen, um zu sehen, was Ihr Browser bisher unterstützt. – Xorlev