因缺乏找到一个下载管理器,我喜欢在Ubuntu的词干远程文件,我想知道是否有可能创建一个使用HTML5和JavaScript在浏览器中提供的新文件API之一。目前,我正在研究一个概念证明,它将从远程URL下载一个小文件(Google徽标)到沙盒文件系统中。下面的代码:下载使用JavaScript文件API
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();
这似乎是它会工作给我,但是运行时,它不会让我谷歌的LOGO下载由于Access-Control-Allow-Origin
。
由于这是相对较新的,我一直未能找到最好的方式来实现我想要使用新的文件API函数,所以我甚至不确定如果使用AJAX请求是最好的方法来做到这一点。如果不是,我愿意接受建议。否则,有没有办法解决Access-Control-Allow-Origin
问题?
我需要保持这种100%的客户端也,我不能用类似的PHP流的文件给客户或任何东西。
另请参阅[绕过同源策略的方法](http://stackoverflow.com/questions/3076414/ways-to-circumvent-the-same-origin-policy) – Oriol
好的,所以使用AJAX请求那么,因为我不能依赖允许我使用它的域,我也不能有服务器端解决方案。有没有其他方法可以在不使用AJAX的情况下将文件下载到Chrome的沙箱存储中? –
@ChrisWhite为了将任何内容保存到Chrome的存储中,您必须拥有要保存的数据。如果数据来自服务器中的文件,则必须使用AJAX来获取它。 – Oriol