3

Могу ли я сохранить файл в пользовательском месте (/home/Users/user1/) с именем file1.txt.chrome.filesystem сохранить файл без указания местоположения

У меня есть этот код:

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'})); 
      }); 
     }); 
    }); 
}); 

С помощью этого кода я получаю приглашение, поэтому мне нужно выбрать директорию, но я хочу без этого, я хочу объявить местоположение каталога в настройках.

Любое решение для этого?

EDIT

Согласно общепринятому ответа от @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

Несвязанный, но вы, вероятно, не должны иметь все свои аргументы с именем 'entry'. – Teepeemm

+0

Согласен, это был пример, который я нашел, поэтому я использовал его, чтобы проверить, не работает ли он. –

+1

Быстрый запрос: не могли бы вы перевести решение в отдельный ответ? Было бы полезно сохранить формат Q & A (и вы получите дополнительный ответ таким образом!) – Xan

ответ

5

Нет, вы не можете предварительно выбрать путь, чтобы быть на чтение/запись - это всегда должно пройти подтверждение пользователя для получения объекта Entry. Рассмотрите это как функцию безопасности.

Однако, если вы объявите суб-разрешение «сохранитьEntries», вы можете запросить только один раз, а затем повторно использовать запись.

См. Документацию для retainEntry и restoreEntry.

Кроме того, вы можете попытаться предоставить suggestedName для chooseEntry, если знаете, где вы хотите, чтобы это было идеально. Я не уверен, будет ли это работать, если вы предоставите абсолютный путь.