Сохранить без подсказки в приложении Chrome Packaged

Я начал заглядывать в Google Apps для Google Apps в Chrome, http://developer.chrome.com/apps, который кажется отличной технологией, но в начале сцена.

Мой вопрос: возможно ли сохранять файлы на компьютер с помощью API-интерфейса файловой системы из приложения без подсказки? Я хочу создать приложение, которое может сохранять файлы журналов и т.д.

Ответ 1

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

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

Проверьте здесь: https://github.com/rogerwang/node-webkit и https://github.com/rogerwang/node-webkit/wiki

Загрузка и сохранение файлов в Node -Webkit очень проста. Похоже на это

var gui = require("nw.gui");
var fs = require("fs");

//Save
fs.writeFile('message.txt', 'Hello Node', function (err) {
    if (err) throw err;
    console.log('It\ saved!');
});

//Load
fs.readFile('message2.txt', 'utf8', function (err, data) {
    if (err) throw err;
    console.log(data);
});

Ответ 3

Вид. Вы можете сохранить в рабочем пространстве приложения, что означает, что файл будет сохранен, но пользователь или другие приложения не будут иметь к нему доступа. Он будет находиться в изолированном хранилище. Для этого просто используйте API-интерфейс файловой системы HTML5 (учебник здесь).

Вам нужно: "permissions": ["storage"] в вашем манифесте, а в js вы можете сделать:

var onInitFsCallback=function(fs) {
  fs.root.getFile('log.txt', {create: true}, function(fileEntry) {
    fileEntry.createWriter(function(fileWriter) {
      _this.fileWriter = fileWriter;
      fileWriter.onwriteend = onWriteEndCallback;
      fileWriter.onerror = onErrorCallback;
      fileWriter.write(myBlob);
      fileWriter.write(myString);
    }, errorHandler);

  }, errorHandler);

};
window.webkitRequestFileSystem([window.TEMPORARY or window.PERMANENT], sizeInBytes,
  onInitFsCallback, onErrorCallback);

Вы также можете проверить свою файловую систему приложения с помощью инструментов Inspector Tools (Resources → Filesystem). Оттуда вы можете загружать или удалять файлы. В Chrome 24 вам необходимо включить эксперименты с инструментами разработчика в флагах Chrome://, нажмите меню настроек DevTools, "Эксперименты" и включите проверку FileSystem.

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