Обработка загрузки файлов с помощью JavaScript и Google Gears, есть ли лучшее решение?
Итак, я уже некоторое время использую этот метод загрузки файлов, но, похоже, Google Gears плохо поддерживает новые браузеры, которые реализуют спецификации HTML5. Я слышал это слово. устарел плавает вокруг нескольких каналов, поэтому я ищу замену, которая может выполнять следующие задачи и поддерживать новые браузеры. Я всегда могу вернуться к gears / standard file POST, но следующие пункты значительно упрощают мой процесс:
- пользователи должен иметь возможность выбрать несколько файлов для загрузки в диалоговом окне.
- я должен иметь возможность получать обновления состояния при передаче файла. (индикаторы)
- я хотел бы иметь возможность использовать запросы
PUT
вместоPOST
- я хотел бы иметь возможность легко присоединять эти события к существующим HTML-элементам с помощью JavaScript. Т. е. выбор файла должен быть вызван щелчком
<button>
. - я хотел бы иметь возможность контролировать параметры ответа/запроса легко с помощью JavaScript.
Я не уверен, есть ли в новых браузерах HTML5 поддержка объектов desktop / request, используемых gears, или есть загрузчик flash, который имеет эти функции, которые я пропускаю в своих поисковых системах 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;
}
Edit: очевидно, flash не способен использовать запросы PUT, поэтому я изменил его на " like "вместо"must".
2 ответа:
(возникло из комментария к исходному вопросу, согласно предложению аскерса.)
Plupload является одним из самых новых малышей на блоке и он использует лучший метод доступен (в формате HTML 5, флеш, шестерни, платформы Silverlight): http://plupload.com/
Я ранее использовал флэш-версии, такие как http://www.webresourcesdepot.com/open-source-flash-uploader-multi-bit-shift/. они работают нормально и, будучи зависимыми только от flash, должны работать на большинстве компьютеров. Я не нашел надежного способа сделать это только с js, но flash можно контролировать с помощью js - особенно если вы пишете свой собственный.
Надеюсь, это поможет.