Расширение Chrome: загрузка / экспорт контента, созданного «на лету» - PullRequest
7 голосов
/ 23 октября 2010

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

Как пример из реальной жизни: есть переменная, содержащая текст "привет мир". Я хочу, чтобы пользователь мог загрузить / создать файл .TXT, содержащий такой текст.

Возможно ли это?

отредактировано 30 октября 2010 г. -

Решения на данный момент:

window.saveAs - вообще не работает

createObjectURL - работает, но имя файла и другие параметры не могут быть изменены

копировать данные в буфер обмена - работает, но пользователю требуется слишком много шагов

создать документ GoogleDocs - может работать, но нуждается в использовании API и Oauth

отредактировано 15 апреля 2011 г.

Похоже, что вещи улучшаются: https://github.com/eligrey/FileSaver.js

Но Chrome 14+ все еще немного странен в отношении имен файлов.

Ответы [ 3 ]

2 голосов
/ 23 октября 2010

В группе Google Chromium-extensions я нашел этот рабочий пример: (я изменил его для работы из всплывающего окна)

BuiltBlob = new BlobBuilder(""); 
BuiltBlob.append("Hello, world"); 
BlobToSave = BuiltBlob.getBlob(); 
chrome.tabs.create({'url': createObjectURL(BlobToSave), 'selected': false});

Но имя файла не задано, оканчиваясь на что-то вроде cf8a56bf-d724-4b97-b10f-e252961135bd

На документах W3C (http://dev.w3.org/2009/dap/file-system/file-writer.html) я обнаружил, что не работает пример:

var bb = new BlobBuilder(); 
bb.append("Lorem ipsum"); 
var fileSaver = window.saveAs(bb.getBlob(), "test_file"); 
fileSaver.onwriteend = myOnWriteEnd; 

но window.saveAs не существует.

Поискав вокруг, я нашел устаревшие ссылки на Google Gears, но больше ничего, может быть, потому что я имею дело с чем-то слишком новым, чтобы иметь надлежащую документацию?

Есть ли способ установить имя файла / mime-type для первого примера?

2 голосов
/ 23 октября 2010

Я думаю, что единственный способ - это вызвать диалог сохранения через flash, см. Downloadify library.

1 голос
/ 23 октября 2010

Я не думаю, что это возможно из соображений безопасности

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