Существует ли способ поставить загрузки файла в очередь, не обращаясь к Flash или Silverlight, только с умно используемыми формами и JavaScript? Обратите внимание, что загрузка должна быть выполнена асинхронно.
Путем "организации очередей" загрузок я подразумеваю, что, если пользователь пытается загрузить несколько файлов, они не должны быть переданы одновременно, а скорее по одному, в единственном HTTP-соединении.
Я не верю, что это возможно сделать на одном HTTP-соединении из-за ограничений спецификации.
Однако вы можете получить почти такое же поведение, поместив поля в отдельные формы (будь то HTML или JavaScript) и отправив их по порядку.
Поместите их цели на и используйте событие
iframe.onload
для запуска следующей формы в списке.
Дополнительные примечания:
form.target
должен быть равен атрибуту iframe.name
. iframe.id
не работает; он вызывает всплывающее окно в IE6 и FF3.5. У меня есть достоверные сведения, что Uploadify очень хорош. Более того, он изначально поддерживает очереди. Простой пример, который предполагает, что вы уже создали элемент формы «file» с идентификатором «foo» и элемент для использования в качестве очереди с идентификатором «queue». См. документы для получения дополнительной информации.
$("foo").uploadify({
'uploader' : 'uploadify.swf',
'script' : 'uploadify.php',
'cancelImg' : 'cancel.png',
'auto' : true,
'folder' : '/uploads',
'queue' : "queue"
});
Один из вариантов, который я видел раньше, хотя у меня нет ссылки или примера, - это использование iframe. По сути, файлы отправляются в часы iframe и JavaScript, чтобы увидеть, когда этот iframe перезагружается, а затем отправляет следующий. Это некрасиво, и я думаю, что пытался, но не смог заставить его работать в разных браузерах (что мне было нужно в то время, включая IE6).
В общих чертах, что нужно сделать:
Это простая логика, которую я могу представить на данный момент [придется писать код, когда я вернусь домой].
Если вы ищете .Net и, более конкретно, Asp.Net MVC-решение, взгляните на этот пост, http://dimebrain.com/2010/01/large-or-asynchronous-file-uploads-in-asp-net-mvc.html. У меня он был закладываем в закладки для справки.
этот плагин jquery утверждает, что он работает без использования swf http://valums.com/ajax-upload/