Domanda

HTML5 introduce la classe FileWriter. Con questa classe è possibile effettuare Blobs. (Un file è un'estensione di un Blob.) Con JavaScript si può fare un Blob e, per esempio spettacolo utilizzando la DataURL.

Esempio:

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);

Ma non è abbastanza buono :) Voglio che il file appena creato (testo) da scaricare. Non ha aperto nello stesso o in una finestra separata.

C'è un modo? Ci deve essere. Come?

(La discussione è già presente nel Google Chrome gruppo )

Aggiorna
L'API file è stato modificato, in quanto le specifiche sono cambiate (o qualcosa del genere !?). Webkit rotto compatibilità con BlobBuilder, ora chiamato WebKitBlobBuilder. Stesso esempio in modo diverso su jsFiddle

Aggiorna
Creazione di Blobs ora funziona in modo diverso di nuovo (non più append()):

blob = new Blob(['some text'], {type: 'text/plain'});
È stato utile?

Soluzione

Il tag scaricare in combinazione con l'oggetto Blob fa il trucco (almeno nelle ultime versioni Chrome). Vedere questo violino :

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

Firefox Indifferente supportare il download attributo però (che supporta l'oggetto Blob). Le discussioni sul implementazione dell'attributo di download in Firefox sono disponibili qui :

Modifica L'attributo download è ora supportato dalle ultime versioni di Firefox a partire dal 2013/10/03

Altri suggerimenti

Ecco un soluzione pura JavaScript per la creazione di un blob di testo e il download come file di testo

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top