我可以将文件保存在名为/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'}));
});
});
});
答案 0 :(得分:6)
没有。您无法预先选择可读/可写的路径 - 它始终必须通过用户确认才能获得Entry对象。将其视为安全功能。
但是,如果您声明“retainEntries”子权限,则只能请求一次,然后重复使用该条目。
请参阅retainEntry
和restoreEntry
的文档。
另外,如果您知道理想情况,可以尝试为suggestedName
提供chooseEntry
。如果您提供绝对路径,我不确定它是否会起作用。