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


Answers

Я никогда не использовал его с файлами размером 2 ГБ, но YUI File Uploader работал очень хорошо в предыдущем проекте. Вы также можете быть заинтересованы в этом плагине jQuery .

Тем не менее, я все еще думаю, что Java-апплет - это путь. Я думаю, что в итоге вы получите меньше возможностей переносимости и пользовательского интерфейса, чем вы ожидаете, и Drag / Drop отлично работает. Для записи Box.net использует Java-апплет для быстрой загрузки нескольких файлов.

Question

Я работаю над веб-приложением. Существует одно место, где пользователь может загружать файлы с помощью протокола 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-раз кнопку «просмотреть», когда вы хотите выбрать несколько файлов в папке.






Вы также можете загружать несколько файлов с помощью HTTP-форм, как уже указывал Дэйв, но если вы используете что-то помимо того, что предлагает HTTP и Javascript, я бы сильно рассмотрел Flash. Есть даже некоторые ранее существовавшие для него решения, такие как MultiPowUpload и он предлагает многие функции, которые вы ищете. Также легче получить информацию о ходе работы с помощью клиента Flash, чем с вызовами AJAX с Javascript, так как у вас немного больше гибкости.




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

Надеюсь это поможет!




Самый простой способ загрузки файлов в java - библиотека GOJFileUpload.jar

Вот учебник библиотеки gojfileupload:

GOJFileUpload

Они дают два метода

  • UploadFile (String filepath, ArrayList imagenames, запрос HttpRequest)
  • UploadFile (String filepath, ArrayList dataname, ArrayList imagenames, запрос HttpRequest)

Они вернут вам HashMap все имя файла, которое вы загрузили после загрузки в указанной папке назначения.




Related