Как создать файл для загрузки в расширении Google Chrome? - PullRequest
6 голосов
/ 23 января 2011

Я хочу создать файл CSV в результате некоторых взаимодействий с пользователем, а затем предложить пользователю загрузить его.Как я могу это сделать?

Я не думаю, что это возможно в прямой JS, но, возможно, Chrome дает мне некоторые повышенные привилегии?

Ответы [ 3 ]

5 голосов
/ 23 января 2011

Теперь вы можете использовать HTML5 File API для загрузки файла. Он все еще находится в разработке, но вы можете использовать BlobBuilder и перенаправить его для загрузки этого файла:

var bb = new BlobBuilder();
bb.append(csvContents);
var blob = bb.getBlob(); 
location.href = window.webkitURL.createObjectURL(blob);

Для получения дополнительной информации о File API, HTML5Rocks имеет отличный учебник:

http://www.html5rocks.com/tutorials/file/filesystem/

2 голосов
/ 23 января 2011

Chrome не предоставляет никакой помощи в этом, но я думаю, что вы должны иметь возможность вызвать диалоговое окно сохранения файла, используя downloadify js библиотеку, которая использует флэш-компонент за сценой.

1 голос
/ 07 марта 2016

Мне нужно было сделать то же самое в последнее время - создать файл и принудительно загрузить его в расширении Chrome. Вот фрагмент кода, который делает это, используя ES6 и рекомендуемые методы:

let docContent = ... /* your content */;
let doc = URL.createObjectURL( new Blob([docContent], {type: 'application/octet-binary'}) );
chrome.downloads.download({ url: doc, filename: filename, conflictAction: 'overwrite', saveAs: true });

Вы также должны объявить правильную привилегию в manifest.json:

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