chrome扩展下载文件

时间:2013-09-14 12:06:39

标签: javascript google-chrome

我正在为chrome编写一个js扩展,它应该下载多个创建的文件。 问题是chrome auto会在当前标签中打开以下地址的文件: 文件系统:https://stackoverflow.com//temporary/myfile.ini 如果我以这种方式循环一个阵列,那么第二个 fileini = [[“filename”,file-content],[],...]它只打印最后一个 如果我尝试使用setTimeout循环它,我从控制台得到一个错误

下面我发布了代码

function createDataFile(filename,content){

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

window.requestFileSystem(window.TEMPORARY, 1024 * 1024 * 20, function(fs) {

    fs.root.getFile(filename, {
        create : true
    }, function(fileEntry) {

        fileEntry.createWriter(function(fileWriter) {

            var blob = new Blob(content);
            console.log("5");
            fileWriter.addEventListener("writeend", function() {
                // navigate to file, will download

                location.href = fileEntry.toURL();
            }, false);

            fileWriter.write(blob);
        }, function() {
        });
    }, function() {
    });
}, errorHandler);

}

function errorHandler(e){     var msg ='';

switch (e.code) {
    case FileError.QUOTA_EXCEEDED_ERR:
        msg = 'QUOTA_EXCEEDED_ERR';
        break;
    case FileError.NOT_FOUND_ERR:
        msg = 'NOT_FOUND_ERR';
        break;
    case FileError.SECURITY_ERR:
        msg = 'SECURITY_ERR';
        break;
    case FileError.INVALID_MODIFICATION_ERR:
        msg = 'INVALID_MODIFICATION_ERR';
        break;
    case FileError.INVALID_STATE_ERR:
        msg = 'INVALID_STATE_ERR';
        break;
    default:
        msg = 'Unknown Error';
        break;
};

console.log('Error: ' + msg);

}

createFileCycle();

function prnt(x) {
    var y;
    if (fileini[x] !== undefined) {
        createDataFile(fileini[x][0], objToArray(fileini[x][1]));
        y = x - 1;
        console.log("printed file" + x);
    } else {
        y = x - 1;
    }
    if (x > 0)
        return setTimeout(function() {
            console.log("going to print file " + y);
            prnt(y);
        }, 500);
    else
        return 0;
}

prnt(fileini.length - 1); 

}

function createFileCycle()创建fileini数组,如上所述

我希望有人可以帮助我。 顺便说一句,几个月前在一台运行ubuntu 32bit的旧笔记本上我已经开始工作,现在在Windows 7上它无法工作,我无法解决问题。

0 个答案:

没有答案