Ответ на этот вопрос зависит от ваших ответов на следующие вопросы:
- Удовлетворяет ли вас тот факт, что поддержка такой возможности в настоящее время существует только в браузерах на основе Chromium (Chrome & Opera)?
- У вас все в порядке с использованием проприетарного API, чтобы воспользоваться такой возможностью?
- У вас есть возможность удаления этого API в будущем?
- У вас все в порядке с сжатием файлов, созданных с помощью указанного API, на песочницу (место, за пределами которого файлы не могут оказать никакого влияния) на диске?
Если вы ответили «да» на все вышеперечисленное, то да, с помощью API FileWriter и FileSystem вы можете записывать файлы из контекста вкладки / окна браузера, используяJavascript.
Вот простой пример того, как API-интерфейсы используются для этого:
function onQuotaRequestSuccess(grantedQuota)
{
function saveFile(directoryEntry)
{
function createFileWriter(fileEntry)
{
function write(fileWriter)
{
var dataBlob = new Blob(["Hello world!"], {type: "text/plain"});
fileWriter.write(dataBlob);
}
fileEntry.createWriter(write);
}
directoryEntry.getFile(
"testFile",
{create: true, exclusive: true},
createFileWriter
);
}
requestFileSystem(Window.PERSISTENT, grantedQuota, saveFile);
}
var desiredQuota = 1024 * 1024 * 1024;
var quotaManagementObj = navigator.webkitPersistentStorage;
quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);
С BakedGoods *, библиотекой Javascript, которая устанавливаетединое целоеПри использовании интерфейса, который может использоваться для выполнения общих операций хранения во всех собственных (включая FileSystem), и некоторых не собственных средствах хранения, вышеупомянутое достигается с помощью этого:
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", type: "text/plain"}],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
Спецификация FileSystem не определяет руководящие принципы относительно того, какструктуры каталогов должны появиться на диске.В браузерах на основе Chromium, например, песочница имеет виртуальную файловую систему (структура каталогов, которая не обязательно существует на диске в той же форме, что и при доступе из браузера), в которойкаталоги и файлы, созданные с помощью API, размещаются.
Так что, хотя вы и можете записывать файлы в систему с помощью API, поиск файлов без API (ну, без API FileSystem) может быть нетривиальным делом.
* BakedGoods поддерживается здесь только этим парнем:)