Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript文件API下载远程文件_Javascript_Access Control_Fileapi - Fatal编程技术网

使用Javascript文件API下载远程文件

使用Javascript文件API下载远程文件,javascript,access-control,fileapi,Javascript,Access Control,Fileapi,由于在Ubuntu上找不到我喜欢的下载管理器,我想知道是否有可能使用HTML5和JavaScript以及Chrome提供的新文件API创建一个下载管理器。目前我正在做一个概念验证,它将从一个远程URL下载一个小文件(Google的徽标)到沙盒文件系统中。代码如下: window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; function onError(e) { co

由于在Ubuntu上找不到我喜欢的下载管理器,我想知道是否有可能使用HTML5和JavaScript以及Chrome提供的新文件API创建一个下载管理器。目前我正在做一个概念验证,它将从一个远程URL下载一个小文件(Google的徽标)到沙盒文件系统中。代码如下:

window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;

function onError(e) {
    console.log('Error:', e)
}

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.google.co.uk/images/srpr/logo11w.png', true);
xhr.responseType = 'blob';

xhr.onload = function(e) {

    window.requestFileSystem(TEMPORARY, 1024*1024, function(fs) {

        fs.root.getFile('google.png', {create: true}, function(fileEntry) {

            fileEntry.createWriter(function(writer) {

                var blob = new Blob([xhr.response], {type: 'image/png'});

                writer.write(blob);

            }, onError);

        }, onError);

    }, onError);

}

xhr.send();
这对我来说似乎是可行的,但是在运行时,由于
Access Control allow Origin
,它不允许我下载谷歌的徽标

由于这是一个相对较新的方法,我还没有找到使用新的文件API函数实现所需功能的最佳方法,因此我甚至不确定使用AJAX请求是否是最好的方法。如果没有,我愿意接受建议。否则,是否有办法绕过
访问控制允许原点问题

我还需要保留这个100%客户端,我不能使用PHP之类的东西将文件流式传输到客户端或其他任何东西。

仅在当前域中有效,除非您使用

因为你不能控制谷歌的服务器,你不能使用它,所以你不能从你的域访问谷歌的文件


当然,您可以始终使用
XMLHttpRequest
从您的服务器获取一个文件,该服务器连接到Google并输出所需的文件。

也可以,因此使用AJAX请求是不可能的,因为我不能依赖允许我使用它的域,而且我也没有服务器端解决方案。有没有其他方法可以在不使用AJAX的情况下将文件下载到Chrome的沙盒存储中?@ChrisWhite为了将任何内容保存到Chrome的存储中,您必须拥有要保存的数据。如果数据来自服务器中的文件,则必须使用AJAX来获取数据。