Согласно Exploring the FileSystem APIs наКак использовать webkitRequestFileSystem в файле: протокол
поддержки браузера ограничений & хранения
Вам может понадобиться
--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:
протокола, spcecifically файлов 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
по протоколу file:
?
Я не получил эту ошибку или '0' для' givenBytes' при ее тестировании. Используются все указанные вами флаги, кроме: '--unsafely-treat-insecure-origin-as-secure',' --unlimited-quota-for-files', '-unlimited-storage'. Единственное изменение, которое я должен был сделать, заключалось в том, что если захотеть делать постоянные данные, сначала нужно использовать 'navigator.webkitPersistentStorage.requestQuota'. –
@PatrickEvans Вы могли писать в 'FileSystem' на' file: 'protocol? Какая версия хром или хром? Можете ли вы опубликовать файл '.html', который вы протестировали в файле' file: 'и' js', используемом в файле '.html'? – guest271314
Да, он написал файл с 'abc' внутри него для обоих temp и persistent. Я попробовал это как с Chrome (50.0.2661.102 m), так и с Chromium (53.0.2752.0) как на Windows 10. Конечно, я отредактирую ссылку во второй –