Подтвердить что ты не робот

Загрузка Force для blob, созданного с помощью FileWriter в JavaScript

HTML5 представляет класс FileWriter. С помощью этого класса вы можете создавать Blobs. (Файл - это расширение Blob.) С помощью JavaScript вы можете создать Blob и, например, показать его с помощью dataURL.

Пример:

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

Но это не очень хорошо:) Я хочу, чтобы новый созданный (текстовый) файл был загружен. Не открывается в том же или отдельном окне.

Есть ли способ? Должно быть. Как?

(Обсуждение уже существует в группе Google Chrome)

UPDATE
API файлов изменился, потому что спецификации изменились (или что-то!?). Webkit нарушил совместимость с BlobBuilder, теперь называемый WebKitBlobBuilder. Тот же пример по-разному на jsFiddle

UPDATE
Создание Blobs теперь работает по-разному (не более append()):

blob = new Blob(['some text'], {type: 'text/plain'});
4b9b3361

Ответ 1

Тег загрузки в сочетании с объектом Blob делает трюк (по крайней мере, в последних версиях хром). Смотрите fiddle:

var blob = new Blob(['blaaaaat'], {type: 'text/plain'});
$('a').attr("href", window.URL.createObjectURL(blob));
$('a').attr("download", "woeii.txt");
Тем не менее, он поддерживает объект Blob. Обсуждения о реализации атрибута загрузки в Firefox доступны здесь:

Изменить: Атрибут загрузки теперь поддерживается новейшими версиями firefox по состоянию на 10/3/2013

Ответ 2

Вот чистое решение Javascript для создания текстового блоба и его загрузки в виде текстового файла.

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