Frage

HTML5 führt die Filewriter-Klasse. Mit dieser Klasse können Sie Blobs machen. (A-Datei ist eine Erweiterung eines Blob.) Mit JavaScript können Sie ein Blob machen und zum Beispiel zeigen sie die DataURL verwendet wird.

Beispiel:

var bb = new BlobBuilder();
bb.append('some text')
var blob = bb.getBlob('text/plain');

var fr = new FileReader();
fr.onload = function(e) {
 document.location = this.result; // voila the dataURL
}
fr.readAsDataURL(blob);

Aber das ist nicht gut genug :) Ich möchte, dass die neu erstellte (Text) Datei heruntergeladen werden. Nicht geöffnet in dem gleichen oder einem separaten Fenster.

Gibt es eine Möglichkeit? Da muss sein. Wie?

(Die Diskussion ist bereits in der Google Chrome Gruppe )

UPDATE
Die Datei-API hat sich verändert, weil die Spezifikationen geändert haben (oder so !?). Webkit brach die Abwärtskompatibilität mit BlobBuilder, jetzt genannt WebKitBlobBuilder. Same Beispiel unterschiedlich auf jsFiddle

UPDATE
Erstellen von Blobs funktioniert nun wieder anders (nicht mehr append()):

blob = new Blob(['some text'], {type: 'text/plain'});
War es hilfreich?

Lösung

Der Download-Tag in Kombination mit dem Blob-Objekt funktioniert den Trick (zumindest in den neuesten Versionen Chrom). Sehen Sie diese Geige :

var blob = new Blob(['blaaaaat'], {type: 'text/plain'});
$('a').attr("href", window.URL.createObjectURL(blob));
$('a').attr("download", "woeii.txt");

Firefox unterstützt keine der Download-Attribut aber (den Blob-Objekt nicht unterstützt). Diskussionen über Implementierung des Download-Attributs in Firefox verfügbar sind hier :

Edit: Der Download Attribut nun durch die neuesten Firefox-Versionen ab 2013.10.03 unterstützt

Andere Tipps

Hier ist eine reine Javascript-Lösung für einen Text Blob und Download als Textdatei erstellen

var fileContent = 'This is sample text file';
var fileName = 'sampleFile.txt';

const blob = new Blob([fileContent], { type: 'text/plain' });
const a = document.createElement('a');
a.setAttribute('download', fileName);
a.setAttribute('href', window.URL.createObjectURL(blob));
a.click(); // EXECUTING CLICK EVENT WILL AUTO-DOWNLOAD THE FILE
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top