由于缺乏在Ubuntu上找到我喜欢的下载管理器,我想知道是否可以使用Chrome中提供的新File API使用HTML5和JavaScript创建一个。目前,我正在制作概念验证,只需将远程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
而无法下载Google的徽标。
由于这是相对较新的,我无法找到最佳方式来实现我想要的新文件API功能,所以我甚至不确定如果使用AJAX请求是最好的方法。如果没有,我愿意接受建议。否则,有没有办法解决Access-Control-Allow-Origin
问题?
我还需要保留这个100%的客户端,我不能使用PHP之类的东西将文件流式传输到客户端或其他任何东西。
答案 0 :(得分:1)
XMLHttpRequest
仅适用于当前域,除非您使用CORS。
由于您无法控制Google的服务器,因此您无法使用它,因此您无法访问您网域中的Google文件。
当然,您始终可以使用XMLHttpRequest
从您的服务器获取文件,该文件连接到Google并输出所需的文件。