chrome.filesystem保存文件没有提示位置

时间:2015-04-27 11:38:28

标签: html5 google-chrome google-chrome-extension google-chrome-app html5-filesystem

我可以将文件保存在名为/home/Users/user1/的自定义位置(file1.txt)。

我有这段代码:

chrome.fileSystem.chooseEntry({type:'openDirectory'}, function(entry) {
    chrome.fileSystem.getWritableEntry(entry, function(entry) {
        entry.getFile('file1.txt', {create:true}, function(entry) {
            entry.createWriter(function(writer) {
                writer.write(new Blob(['Lorem'], {type: 'text/plain'}));
            });
        });
    });
});

使用此代码,我得到提示,所以我需要选择目录,但我想没有它,我想在设置中声明目录位置。

对此有何解决方案?

修改

根据@Xan接受的回答:

// set location
$('#location_field').on('click', function(){
    chrome.fileSystem.chooseEntry({type:'openDirectory'}, function(entry) {
        chrome.storage.sync.set({'print_location': chrome.fileSystem.retainEntry(entry)});
    });
});

// get location 
var print_location = null;
chrome.storage.sync.get({
    print_location: null
}, function(items){
    chrome.fileSystem.restoreEntry(items.print_location, function(entry){
        print_location = entry;
    });
});

// save file
chrome.fileSystem.getWritableEntry(print_location, function(entry) {
    entry.getFile('file1.txt', {create:true}, function(entry) {
        entry.createWriter(function(writer) {
            writer.write(new Blob(['Lorem'], {type: 'text/plain'}));
        });
    });
});

1 个答案:

答案 0 :(得分:6)

没有。您无法预先选择可读/可写的路径 - 它始终必须通过用户确认才能获得Entry对象。将其视为安全功能。

但是,如果您声明“retainEntries”子权限,则只能请求一次,然后重复使用该条目。

请参阅retainEntryrestoreEntry的文档。

另外,如果您知道理想情况,可以尝试为suggestedName提供chooseEntry。如果您提供绝对路径,我不确定它是否会起作用。