Я попытался написать немного кода для извлечения файла изображения (из Викисклада), сохранить его локально, а затем отобразить его. Здесь мой код:Использование LocalFileSystem для хранения и отображения изображений
<!DOCTYPE html>
<html>
<head>
<script>
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
function onError(e) {
console.log('Error', e);
}
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://upload.wikimedia.org/wikipedia/fr/2/26/10_francs_Mathieu_1987_F365-28_revers.jpg', true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
window.requestFileSystem(PERSISTENT, 1024 * 1024, function(fs) {alert(fs.root.name);}, onError);
window.requestFileSystem(PERSISTENT, 1024 * 1024, function(fs) {
fs.root.getFile('image.jpg', {create: true}, function(fileEntry) {
fileEntry.createWriter(function(writer) {
writer.onwrite = function(e) {};
writer.onerror = function(e) {};
var blob = new Blob([xhr.response], {type: 'image/jpeg'});
writer.write(blob);
}, onError);
}, onError);
}, onError);
window.requestFileSystem(PERSISTENT, 1024 * 1024, function(fs) {
fs.root.getFile('image.jpg', {create: false}, function(fileEntry) {
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(event) {
var img = document.createElement("img");
img.src = event.target.result;
document.body.parentNode.insertBefore(img, document.body.nextSibling);
};
reader.readAsDataURL(file);
}, onError);
}, onError);
}, onError);
};
xhr.send();
</script>
</head>
<body>
</body>
</html>
Ничего не отображается. Консоль Chrome не отображает сообщение об ошибке, поэтому я понятия не имею, почему она не работает. Любая подсказка?
Edit:
Я только что видел я на самом деле получить FileError, код 10, что означает QUOTA_EXCEEDED_ERR, даже если я начинаю Google Chrome с этими параметрами:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files --unlimited-quota-for-files
На самом деле, я получаю такая же ошибка с параметром --unlimited-quota-for-files
или нет, что странно. Но я получаю файл Ошибка 2 без --allow-file-access-from-files
Как насчет 'window.onload = функция() {xhr.send();};'? – Passerby
Эта программа - просто эксперимент, чтобы увидеть, как все работает. –