Из-за отсутствия менеджера загрузки, который мне нравится в Ubuntu, мне было интересно, можно ли создать его с помощью HTML5 и JavaScript с новым File API, доступным в Chrome. В настоящее время я работаю над доказательством концепции, которая просто загрузит небольшой файл (логотип Google) с удаленного URL-адреса в файловую систему песочницы. Код ниже:
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();
Мне кажется, что это сработает, однако при запуске я не могу загрузить логотип Google из-за Access-Control-Allow-Origin
.
Из-за того, что это относительно новое, я не смог найти лучший способ добиться того, чего я хочу, используя новые функции файлового API, поэтому я даже не уверен, что использование запроса AJAX является лучший способ сделать это. Если нет, я открыт для предложений. В противном случае, есть ли способ обойти проблему Access-Control-Allow-Origin
?
Мне также нужно сохранить эту 100% клиентскую сторону, я не могу использовать что-то вроде PHP для потоковой передачи файла клиенту или что-то еще.