java уроки - Лучший способ загрузить несколько файлов из браузера




5 Answers

Я реализовал что-то совсем недавно в Silverlight.

В основном использует HttpWebRequest для отправки части данных в GenericHandler.

В первом сообщении отправляется 4 КБ данных. На втором куске я отправляю еще 4K кусок.

Когда получен 2-й чанк, я вычисляю круговую поездку, полученную между первым и вторым куском, и теперь 3-й кусок при отправке будет знать, чтобы увеличить скорость.

Используя этот метод, я могу загружать файлы любого размера, и я могу возобновить их.

Каждый пост, который я отправляю по этой информации:

[ПАРАМЕТРЫ] [ФИЛЕДАТА]

Здесь параметры содержат следующее: [Chunk #] [Filename] [Session ID]

После того, как каждый кусок получен, я отправляю ответ обратно на свой Silverlight, в котором говорится, как быстро это получилось, чтобы теперь он мог отправить большой кусок.

Трудно выразить свое объяснение без кода, но это в основном, как я это сделал.

В какой-то момент я соберу краткую запись о том, как я это сделал.

работа файлами

Я работаю над веб-приложением. Существует одно место, где пользователь может загружать файлы с помощью протокола HTTP. Существует выбор между классическим управлением HTML-файлами и апплетами Java для загрузки файлов.

Классическая загрузка файла HTML невелика, потому что вы можете выбирать только один файл за раз, и довольно сложно получить индикацию прогресса во время фактической загрузки (я, наконец, получил его, используя таймер, обновляющий индикатор прогресса с данными, полученными из сервер через вызов AJAX). Преимущество: он всегда работает.

С помощью Java-апплета я могу сделать больше вещей: выбрать сразу несколько файлов (даже папку), сжать файлы, получить реальный индикатор выполнения, перетащить файлы на апплет и т. Д.
НО есть несколько недостатков:

  • это кошмар, чтобы заставить его работать на Mac Safari и Mac Firefox (спасибо Liveconnect)
  • пользовательский интерфейс не является подлинным пользовательским интерфейсом, и некоторые люди отмечают, что
  • апплет не так отзывчив, как должен (может быть, я виноват, но все выглядит нормально)
  • есть ошибки в классе Java UrlConnection с HTTPS, поэтому я использую общий HTTP-клиент Apache для фактической загрузки HTTP. Это довольно большой пакет и замедляет загрузку файла .jar
  • у обычного HTTP-клиента Apache иногда возникают проблемы с прокси-серверами
  • время выполнения Java довольно велико

Я поддерживал этот Java-апплет какое-то время, но теперь я устал от всех недостатков и рассматриваю возможность написания / покупки совершенно нового компонента для загрузки файлов тезисов.

Вопрос

Если у вас были следующие требования:

  • загрузить несколько файлов из браузера через HTTP или HTTPS
  • сжимать файлы, чтобы сократить время загрузки
  • загрузка должна работать на любой платформе, с собственным пользовательским интерфейсом
  • должен иметь возможность загружать огромные файлы, по крайней мере, до 2 гб
  • у вас есть карт-бланш по технологии

Какую технологию / componenttent вы бы использовали?

Редактировать :

  • Drag'n'Drop файлов на компоненте будет большим плюсом.
  • Похоже, что есть много проблем, связанных с ошибками с Flash Player ( swfupload известные проблемы ). Правильная поддержка Mac и загрузка через прокси с аутентификацией - это варианты, без которых я не могу обойтись. Вероятно, это исключает все варианты на основе Flash :-(.
  • Я исключаю все параметры HTML / Javascript, потому что вы не можете выбирать более одного файла за раз с помощью классического элемента управления HTML. Это боль, чтобы щелкнуть n-раз кнопку «просмотреть», когда вы хотите выбрать несколько файлов в папке.



Хорошо, это мое занятие

Я провел некоторое тестирование с помощью swfupload, и у меня есть свой предыдущий опыт работы с Java, и я пришел к выводу, что независимо от используемой технологии нет идеального решения для загрузки в браузере : при загрузке огромных файлов всегда будут возникать ошибки, через прокси, с ssl и т. д. ...

НО :

  • Flash-загрузчик (a la swfupload) действительно легкий, не нуждается в авторизации от пользователя и имеет собственный интерфейс, который ДЕЙСТВИТЕЛЬНО крут, мне кажется
  • загрузчик java требует авторизации, но вы можете делать все, что захотите, с файлами, выбранными пользователем (например, при необходимости сжатия), а перетаскивание - хорошо. Будьте готовы к некоторым эпическим ошибкам debuggin '.
  • Я не получал изменений в игре с Silverlight, если бы мне хотелось, может быть, это реальный ответ, хотя технология все еще довольно молодая, поэтому ... Я отредактирую этот пост, если у меня появится шанс немного поиграть с Silverlight

Спасибо за ответы на все вопросы !!




Как насчет этих двух Jupload http://jupload.sourceforge.net/ и jumploader http://jumploader.com/

Оба являются Java-апплетами, но они также очень просты в использовании и реализуются.




Существуют элементы управления загрузкой HTTP / HTTPS, которые позволяют загружать многофайлы. Here один из Telerik, который я считаю надежным и надежным. В последней версии есть большинство, если не все ваши требования к характеристикам.




Вы можете проверить пакет Apache Commons FileUpload. Он позволяет загружать несколько файлов, отслеживать ход загрузки и многое другое. Вы можете найти более подробную информацию здесь:

http://commons.apache.org/fileupload/
http://commons.apache.org/fileupload/using.html

Удачи




Related