所以这里有一个类似的帖子html-5-filesystem-access-type-error.但是,我对结论不是很满意,因为我觉得它实际上没有回答这个问题 - 给出的解决方案是不推荐使用的代码解决方案.有没有人知道如何使用navigator而不是window像Chrome控制台通知那样做?
我一直在使用以下它可以工作,但Chrome控制台一直告诉我不要这样做,因为它已被弃用.
工作不推荐的代码
window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024*280, function(grantedBytes) {
window.webkitRequestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);
}, function(e) {
console.log('Error', e);
});
Run Code Online (Sandbox Code Playgroud)
注意:onInitFs并且errorHandler它们都是在其他地方定义的功能.
控制台日志 - 我在控制台中收到的消息如下:
'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage'
or 'navigator.webkitPersistentStorage' instead.
Run Code Online (Sandbox Code Playgroud)
因此,最佳做法是停止使用已弃用的方法.不幸的是,当我window用navigator它更换崩溃时(见下文).如何使用navigator而不是window访问文件系统?
我正在编写一个Web浏览器应用程序(客户端),它从许多位置下载大量的块并加入它们来构建blob.然后该blob作为公共文件保存到本地文件系统.我这样做的方式是使用ArrayBuffer对象和blob.
var blob = new Blob([ArrayBuffer1, ArrayBuffer2, ArrayBuffer3, ...], {type: mimetype})
这适用于中小型文件(直到700 MB aprox),但浏览器崩溃时文件较大.我知道RAM内存有其局限性.情况是我需要构建blob以生成文件,但我想让用户下载比这个大得多的文件(想象一下,例如,大约8GB的文件).
¿如何构建blob以避免大小限制?LocalStorage比RAM更受限制,因此我不知道该使用什么或如何使用它.
我正在尝试设置一个文件存储空间以供以后在Phonegap中使用,但现在在Chrome中进行调试.按照html5rocks中描述的方式只允许我从用户请求配额,但是不执行请求文件系统时的回调.看到:
window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024*1024, function(grantedBytes) {
requestFS(grantedBytes);
}, onError);
function requestFS(grantedBytes) {
window.webkitRequestFileSystem(window.PERSISTENT, grantedBytes, function(fs) {
// ... does not get called ###################################
}, onError);
}
Run Code Online (Sandbox Code Playgroud)
现在Chrome警告我,webkitStorageInfo已被弃用,并且今天有一个新标准https://dvcs.w3.org/hg/quota/raw-file/tip/Overview.html.我尝试使用navigator.webkitPersistentStorage但没有成功.
文件系统API是否可能当前不工作或已被弃用,或者我的上述代码可能有问题?
下面的函数也没有做任何事情,没有错误可见:
navigator.webkitPersistentStorage.queryUsageAndQuota(function(usage, quota) {
console.log(arguments);
navigator.webkitPersistentStorage.requestQuota(1024 * 1024, function(grantedQuota) {
console.log(arguments);
window.webkitRequestFileSystem(window.PERSISTENT, 1024 * 1024, function(fs) {
console.log(arguments);
});
});
});
Run Code Online (Sandbox Code Playgroud)
我得到了Eric Bidelman工作的Filer,所以我的代码中的某些东西一定是错的,尽管我看不出Filer init方法和我正在做的事情之间的区别.