Итак - я немного использовал этот метод загрузки файлов, но похоже, что Google Gears плохо поддерживает новые браузеры, которые реализуют спецификации HTML5.Я слышал, как слово устарело , распространяющееся по нескольким каналам, поэтому я ищу замену, которая может выполнять следующие задачи и поддерживать новые браузеры.Я всегда могу прибегнуть к POST-файлам для шестерен / стандартных файлов, но следующие пункты значительно упрощают мой процесс:
- Пользователи ДОЛЖНЫ , чтобы иметь возможность выбрать несколько файлов для загрузки в диалоговом окне.
- Я ДОЛЖЕН быть в состоянии получать обновления статуса при передаче файла.(индикаторы выполнения)
- Я хотел бы иметь возможность использовать
PUT
запросов вместо POST
- Я хотел бы иметь возможность легко прикреплять эти события к существующим элементам HTML с помощью JavaScript,То есть выбор файла должен запускаться при нажатии
<button>
. - Я хотел бы иметь возможность легко контролировать параметры ответа / запроса с помощью JavaScript.
Я не уверенесли в новых браузерах HTML5 есть поддержка для шестеренок рабочего стола / объектов запросов, или если во флэш-загрузчике есть эти функции, которых мне не хватает в моих поисках в Google.
Пример загрузки кода с использованием шестеренок:
// select some files:
var desktop = google.gears.factory.create('beta.desktop');
desktop.openFiles(selectFilesCallback);
function selectFilesCallback(files) {
$.each(files,function(k,file) {
// this code actually goes through a queue, and creates some status bars
// but it is unimportant to show here...
sendFile(file);
});
}
function sendFile(file) {
google.gears.factory.create('beta.httprequest');
request.open('PUT', upl.url);
request.setRequestHeader('filename', file.name);
request.upload.onprogress = function(e) {
// gives me % status updates... allows e.loaded/e.total
};
request.onreadystatechange = function() {
if (request.readyState == 4) {
// completed the upload!
}
};
request.send(file.blob);
return request;
}
Редактировать: очевидно, flash не может использовать PUT-запросы, поэтому я изменил его на «like» вместо «must».