当前位置: 首页 > 知识库问答 >
问题:

为什么这个文件系统api requestQuota调用失败?

鲁品
2023-03-14

我正在编写一个在Chrome中运行的HTML5应用程序,但它将在本地文件系统上运行(所以他们将通过双击html文件来启动它)。当我试图访问文件系统时,它会抛出一个错误,我想这是因为它是一个本地文件。有办法让Chrome允许这样做吗?

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <script>
        //File System handler
        window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;

        function onInitFs(fs) {
            console.log('Opened file system: ' + fs.name);
        }

        function errorHandler(e) {
            var msg = '';

            switch (e.code) {
            case FileError.QUOTA_EXCEEDED_ERR:
                msg = 'QUOTA_EXCEEDED_ERR';
                break;
            case FileError.NOT_FOUND_ERR:
                msg = 'NOT_FOUND_ERR';
                break;
            case FileError.SECURITY_ERR:
                msg = 'SECURITY_ERR';
                break;
            case FileError.INVALID_MODIFICATION_ERR:
                msg = 'INVALID_MODIFICATION_ERR';
                break;
            case FileError.INVALID_STATE_ERR:
                msg = 'INVALID_STATE_ERR';
                break;
            default:
                msg = 'Unknown Error';
                break;
            };

            console.log('Error: ' + msg);
        }

        /** THIS CAUSES IT TO THROW AN ERROR */
        window.webkitStorageInfo.requestQuota(window.PERSISTENT, 5*1024*1024, function(grantedBytes) {
                window.requestFileSystem(window.PERSISTENT, grantedBytes, onInitFs, errorHandler);
        }, function(e) {
            console.log('Error', e);
        });
        </script>
    </body>
</html>

如果改为请求临时存储,它仍然会抛出一个错误,但现在是security_err:

window.requestFileSystem(window.TEMPORARY, 5*1024*1024, onInitFs, errorHandler);

共有1个答案

子车高超
2023-03-14

不确定这是最好的答案,但这似乎是对本地文件的安全限制。按以下方式启动Chrome可以解决此问题:

google-chrome --allow-file-access-from-files

这将允许创建持久存储。

 类似资料:
  • 我正在上我的第一堂操作系统课,所以希望我在这里没有任何大的误解。 我想知道为什么getpid()在Linux中实现为系统调用。据我所知,某些函数被做成系统调用,因为它们访问或更改操作系统可能想要保护的信息,所以它们被实现为系统调用,以便将控制权转移到内核。 但据我所知,getpid()只是返回调用进程的进程id。是否存在不授予此信息权限的情况?简单地让getpid()成为一个普通的用户函数不是很安

  • 我想使用Flink读取输入文件,进行聚合,然后将结果写入输出文件。作业处于批处理模式。请参见字数。py如下: 在运行python wordcount之前。py,我运行echo-e“flink\npyflink\nflink” 虽然我希望有一个包含内容的单个文件/tmp/输出: 实际上,我通过调整下面生成单个文件/tmp/输出的参数,得到了上面的python程序。 运行此版本将生成一个 /tmp/o

  • 在Hugo模板中,我知道您可以使用< code>function param调用函数: 但在文档中,我还看到您还可以: 我从未遇到过这种调用函数的方式(在Ruby/Python等语言中)。这是围棋特有的,还是雨果特有的?这种调用函数的方式是如何调用的?另外,如果你有不止一种类型的论点,你能做到吗?

  • 本文向大家介绍C++系统调用是什么,你用过哪些系统调用相关面试题,主要包含被问及C++系统调用是什么,你用过哪些系统调用时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1)概念: 在计算机中,系统调用(英语:system call),又称为系统呼叫,指运行在使用者空间的程序向操作系统内核请求需要更高权限运行的服务。系统调用提供了用户程序与操作系统之间的接口(即系统调用是用户程序和内核交互的

  • 问题内容: Docker对Union File系统(例如AUFS)创建容器究竟做了什么?如果Docker必须使用常规文件系统而不是联合文件系统,那么会有什么缺点? 我正在寻找具体的技术细节/内部信息,而不是高水平的答案。 问题答案: 它用于: 避免在每次将图像作为新容器运行时复制一组完整的文件 在其自己的层中隔离对容器文件系统的更改,从而允许从已知内容重新启动同一容器(因为移除容器后,具有更改的层

  • 我注意到,当我使用条件断点进行调试时,执行速度会大大减慢。我知道这一点已经有一段时间了,现在想明白为什么。到底是什么原因导致执行如此缓慢?我知道正在添加一个条件,但是如果我自己添加条件,我不会减慢执行速度。 例如,假设我们有以下代码。假设我们添加了一个条件断点。让我们将条件设置为i==10000。 现在让我们自己写条件。 90秒完成击球(包括开始的9秒) 日食: ~9秒到达断点 第二个示例几乎是在