Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下载文件并在Chrome extension中本地保存_Javascript_Google Chrome Extension_Io_Synchronization - Fatal编程技术网

Javascript 下载文件并在Chrome extension中本地保存

Javascript 下载文件并在Chrome extension中本地保存,javascript,google-chrome-extension,io,synchronization,Javascript,Google Chrome Extension,Io,Synchronization,我正在开始一个项目,我需要编写一个Chrome扩展,它必须能够离线运行,并再次在线同步。因此,我想知道Chrome扩展是否有任何方法可以下载文件并在不提示用户输入每个文件的情况下在本地保存文件(文件量可能相当大) 我看过chrome.storage模块,它可以做类似的事情,但是如果有很多文件,我担心性能。所以如果你有一些关于性能的信息,我也很感兴趣 编辑:我使用Chrome的文件系统功能进行了测试,以下是我的来源: window.requestFileSystem = window.reque

我正在开始一个项目,我需要编写一个Chrome扩展,它必须能够离线运行,并再次在线同步。因此,我想知道Chrome扩展是否有任何方法可以下载文件并在不提示用户输入每个文件的情况下在本地保存文件(文件量可能相当大)

我看过chrome.storage模块,它可以做类似的事情,但是如果有很多文件,我担心性能。所以如果你有一些关于性能的信息,我也很感兴趣

编辑:我使用Chrome的文件系统功能进行了测试,以下是我的来源:

window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;

function onError(e) {
  console.log('Error', e);
}

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://upload.wikimedia.org/wikipedia/fr/2/26/10_francs_Mathieu_1987_F365-28_revers.jpg', true);
xhr.responseType = 'blob';

xhr.onload = function(e) {

window.requestFileSystem(PERSISTENT, 1024 * 1024, function(fs) {alert(fs.root.name);}, onError);

  window.requestFileSystem(PERSISTENT, 1024 * 1024, function(fs) {
    fs.root.getFile('image.jpg', {create: true}, function(fileEntry) {
      fileEntry.createWriter(function(writer) {

        writer.onwrite = function(e) {};
        writer.onerror = function(e) {};

        var blob = new Blob([xhr.response], {type: 'image/jpeg'});

        writer.write(blob);

      }, onError);
    }, onError);
  }, onError);
};

xhr.send();

这似乎有效,但我在任何地方都看不到我的文件。我尝试了一些其他的方法来保存路径,比如给出一条绝对路径,但没有成功。有什么想法吗?

您需要将文件保存到用户的文件系统上,还是虚拟文件系统也能完成这项工作?我不明白您在上下文中所说的虚拟文件系统是什么意思。沙盒系统,请看,我刚才正在看这个,它可能可以。我正在写一个简短的poc…这就是沙盒/虚拟的意思。这些文件在虚拟意义上是可用的——HTML5API的作用就像有真实的文件一样——但它们不存在于本地文件系统的任何地方。当然,它们确实存在于字面意义上,但是它们被混淆了,所以本地文件系统不可能看到它们。这使得本地恶意软件感染沙盒文件系统变得不切实际,反之亦然。