将博客文章保存到chrome文件系统blob

时间:2015-08-01 01:45:15

标签: jquery blogs html5-filesystem

我正在尝试将数据(包括图片/链接/等)输入到使用chrome文件系统保存的jquery文本编辑器中。我可以保存为单个文件类型(比如text / plain),但无法弄清楚如何同时将图像和文本保存到文件系统。我基本上希望我的博客“发布”保存到本地沙盒chrome文件系统,以便以后检索而不是服务器或发布到网页......任何想法?

1 个答案:

答案 0 :(得分:0)

由于您尝试保存文本以及图像,图片和链接,因此您应将博客文章另存为html文件。假设你的“jquery文本编辑器”有一个类.jquery-textEditor,一个类为.save的保存按钮,以及一个类为.open的打开按钮,这就是你应该打开的方式/保存“博客文章”。

//save
var dbName = 'text-vanillajs';
var savedFileEntry, fileEntry;

function getText(callback) {
  chrome.storage.local.get(dbName, function(storedData) {
    var text = $('.jquery-textEditor').html();
    callback(text);
  }.bind(this));
}

function exportToFileEntry(fileEntry) {
  savedFileEntry = fileEntry;
  getText(function(contents) {
    fileEntry.createWriter(function(fileWriter) {
      var truncated = false;
      var blob = new Blob([contents]);
      fileWriter.onwriteend = function(e) {
        if (!truncated) {
          truncated = true;
          this.truncate(blob.size);
          return;
        }
      };
      fileWriter.write(blob);
    });
  });
}

function ExportToDisk() {
  chrome.fileSystem.chooseEntry({
    type: 'saveFile',
    suggestedName: 'untitled.html',
    accepts: [{
      description: 'HTML File',
      extensions: ['html']
    }],
    acceptsAllTypes: true
  }, exportToFileEntry);
}

$('.save').click(function() {
  if (savedFileEntry) {
    exportToFileEntry(savedFileEntry);
  } else {
    ExportToDisk();
  }
});
//open
$('.open').click(function(){
  chrome.fileSystem.chooseEntry({
    type: 'openFile',
    accepts: [{
      extensions: ['html']
    }]
  }, function(fileEntry) {
    if (!fileEntry) {
      return;
    }
    fileEntry.file(function(file) {
      var reader = new FileReader();
        reader.onloadend = function(e) {
          var result = e.target.result;
          $('.jquery-textEditor').html(result);
        };
        reader.readAsText(file);
    });
  });
});