Как я могу сгенерировать файл и предложить его для загрузки в виде простого JavaScript? - PullRequest
5 голосов
/ 30 мая 2011

Я хотел бы динамически создать текстовый файл в javascript, а затем предложить его для загрузки.В настоящее время я могу довести это до некоторой степени с помощью любого из следующих решений:

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

ИЛИ

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

Однако оба эти решения, когда появится окно загрузки, будут толькоПредложите имя файла по умолчанию «download» в диалоговом окне «Сохранить как».

Мой вопрос в основном, как я могу изменить его на конкретное имя файла, например, «readme.txt» или «scene.obj»

Также обратите внимание, что тип данных ранее был 'text / plain', однако, если он используется, документ переключается на новый текстовый документ вместо того, чтобы предлагать его для загрузки (как, кажется, делает text / octet-stream).

Я не хочу флэш-решение, javascript / html5 только предложения, пожалуйста.

Ура, Джош

Ответы [ 2 ]

4 голосов
/ 17 июля 2011

Для этого вам придется использовать FileSaver из FileAPI: спецификация Writer.Пока что это всего лишь черновик, и, согласно ответу из списка рассылки , он еще не реализован в браузерах.

Например, вы можете посмотреть выпуск хрома , чтобы получить актуальную информацию о ходе реализации

UPD 02.08.2013: с тех пор я нашел проект , обеспечивающий интерфейс FileSaver с использованием хитрых трюков

0 голосов
/ 30 мая 2011

Я думаю, вы должны проверить: Таблица jQuery для экспорта в CSV

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...