Согласно Изучение API файловой системы на
Поддержка браузера и ограничения на хранение
Вам может понадобиться флаг
--allow-file-access-from-files
, если вы отлаживаете свое приложение изfile://
. Неиспользование этих флагов приведет кSECURITY_ERR
илиQUOTA_EXCEEDED_ERR
FileError.
Запущен хром с --allow-file-access-from-files
, --unlimited-storage
и, возможно, устаревшим --unlimited-quota-for-files
; также --unsafely-treat-insecure-origin-as-secure=file:///path/to/directory/*
с --user-data-dir=/path/to/directory
набором.
Интересно, что при открытии хрома отображается уведомление
Вы используете неподдерживаемый флаг командной строки:
--unsafely-treat-insecure-origin-as-secure
. Стабильность и безопасность пострадают.
Есть и другие неуказанные флаги, которые можно использовать; проигнорировал уведомление, так как все еще мог установить и получить localStorage
по протоколу file:
, особенно файлы по file:///path/to/directory/*
, хотя
navigator.webkitTemporaryStorage.requestQuota(1024*1024, function(grantedBytes) {
console.log(grantedBytes)
}, errorHandler);
зарегистрирован 0
, где errorHandler
function errorHandler(e) {
console.log(e)
}
Также
function writeFile(fs) {
fs.root.getFile("file.txt", {create: true}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
// call `readFile`
window.requestFileSystem(window.TEMPORARY, 1024*1024, readFile, errorHandler);
};
fileWriter.onerror = errorHandler;
var blob = new Blob(["abc"], {type: "text/plain"});
fileWriter.write(blob);
}, errorHandler);
}, errorHandler);
}
window.requestFileSystem(window.TEMPORARY, 1024*1024, writeFile, errorHandler);
function readFile(fs) {
fs.root.getFile("file.txt", {}, function(fileEntry) {
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
console.log(e.target.result)
};
reader.readAsText(file);
}, errorHandler);
}, errorHandler);
}
зарегистрирован
FileError {code: 7, name: "InvalidStateError", message: "An operation that depends on state cached in an in…he state had changed since it was read from disk."}
code:7
message:"An operation that depends on state cached in an interface object was made but the state had changed since it was read from disk."
name:"InvalidStateError"
__proto__:DOMError
Вопрос: Какие изменения необходимы при запуске флагов, обходные пути или другие подходы, которые позволили бы использовать протокол webkitRequestFileSystem
at file:
?
0
вместоgrantedBytes
при тестировании. Использованы все перечисленные вами флаги, кроме:--unsafely-treat-insecure-origin-as-secure
,--unlimited-quota-for-files
,--unlimited-storage
. Единственное изменение, которое я должен был сделать, было то, что при желании сделать постоянные данные нужно было сначала использоватьnavigator.webkitPersistentStorage.requestQuota
. - person Patrick Evans   schedule 28.05.2016FileSystem
по протоколуfile:
? Какая версия хрома или хрома? Можете ли вы опубликовать файл.html
, который вы протестировали в протоколеfile:
иjs
использовали в файле.html
? - person guest271314   schedule 28.05.2016abc
внутри как для временного, так и для постоянного. Я попробовал это как с Chrome (50.0.2661.102 m), так и с Chromium (53.0.2752.0) в Windows 10. Конечно, я отредактирую ссылку через секунду. - person Patrick Evans   schedule 28.05.2016--allow-file-access-from-files --user-data-dir=/path/to/my/Desktop/data
. И был запущен с использованием URL-адреса файла:file:///C:/Users/polar/Desktop/test.html
- person Patrick Evans   schedule 28.05.2016FileSystem
вfile:
с третьей попытки, установив хром 50.0.2661.102 на живую ОС. - person guest271314   schedule 28.05.2016