如何下载Chrome扩展程序中存储的信息?

时间:2019-06-07 08:17:20

标签: google-chrome google-chrome-extension

我正在开发一个Chrome扩展程序,其工作流程如下:

  • 用户浏览互联网并可以保存链接。我非常希望将所有链接存储在本地,而不必与外部服务器通信。
  • 然后用户可以点击扩展名中的按钮,该按钮将生成并下载到目前为止所有已保存链接的csv文件

两个问题:

  1. 通过多个会话存储此数据的适当方法是什么?
  2. 生成文件并提示下载的合适方式是什么?

对于1,我计划使用chrome.storage.local

对于2,目前尚不清楚最佳方法是什么。我正在考虑将数据写入options.html或popup.html,然后调用chrome.downloads下载该页面,但这感觉像是一大堆黑客。

做1和2的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

  1. 在这里正确使用chrome.storage.local
  2. 我正从弹出窗口中使用此代码段来保存text / json / csv文件:
/**
 * @param data {String} what to save
 * @param extension {String} file extension
 */
function saveFile(data, extension = 'json') {
    const fileName = `export-file.${extension}`;

    const textFileAsBlob = new Blob([data], {type: 'text/plain'});
    const downloadLink = document.createElement('a');
    downloadLink.download = fileName;

    downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
    downloadLink.target = '_blank';
    downloadLink.click();

    return fileName;
}

它将保存文件到磁盘。而且这不是一种骇人听闻的方式。

更新#2

另一种方法是将base64 URL传递到下载API:

chrome.downloads.download({url: 'data:image/gif;base64,SEVMTE8gV09STEQh', filename: 'test.txt'})