Способы подачи файлов через сервлеты - PullRequest
1 голос
/ 12 июня 2011

Для краткости рассмотрим приложение для работы с изображениями в стиле Facebook.Пользователи могут загружать контент, а также получать доступ к контенту, которым делятся другие люди.Я смотрю на лучшие способы обработки этого вида файловых приложений через Java-сервлеты.На эту тему на удивление мало информации.Буду признателен, если кто-нибудь расскажет мне о своем личном опыте на небольшой установке (несколько сотен пользователей).

До сих пор я испытывал желание использовать базу данных в качестве файловой системы (используя mongodb), но этот подход кажется громоздким и утомительным и потребует репликации части функциональности, уже предоставленной родными файловыми системами ОС.Я не хочу использовать коммерческое программное обеспечение или иметь пропускную способность, чтобы написать свой собственный, как Facebook.Все, что я хочу, - это сделать это с помощью свободного программного обеспечения на небольшом сервере с RAID или чем-то подобным.Решение, которое хорошо масштабируется на несколько серверов, было бы плюсом.Важно обслуживать его с помощью Java-сервлетов (я готов рассмотреть альтернативы, но их нужно использовать с помощью Java).

Буду признателен за любую помощь.Любые ссылки на личный опыт также будут полезны.Благодарю.

Ответы [ 2 ]

1 голос
/ 14 июня 2011

Гуру -

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

1) Зарегистрируйтесь в Amazon Web Services, особенно в S3 (Simple Storage Service).Существует уровень бесплатного хранения, который должен охватывать количество пользователей, которых вы описали.

2) Настройте веб-приложение, которое принимает загрузки.Я использую Uploadify в сочетании с jQuery и ajax, чтобы загрузить в сервлет, который принимает, сканирует, регистрирует и делает все, что я хочу с файлом (ами).На стороне сервлета я использую ESAPI '1010 * s механизм проверки загрузки, часть механизма проверки, который только что построен на основе Commons File Upload , который я также использовал сам по себе.

3) После надлежащей обработки файла (ов) я использую JetS3t в качестве API Java-AmazonS3 и загружаю файл в Amazon S3.На этом этапе пользователи могут загружать или просматривать фотографии в зависимости от уровня доступа.Я нашел самый простой способ сделать это - использовать JetS3t в сочетании с аутентификацией веб-приложения для создания временных URL-адресов, которые дают пользователю доступ к файлу в течение определенного периода времени, после которого URL-адрес становится непригодным для использования.

Несколько вещей: если вы не заинтересованы в обработке файлов и доверяете людям, загружающим свои файлы полностью, вы можете загрузить их непосредственно в Amazon S3.Тем не менее, я считаю, что гораздо проще просто загрузить на свой сервер и выполнить всю мою обработку, проверку и регистрацию, прежде чем делать последний шаг и поместить файл в Amazon S3.Особенности всего этого, просто дайте мне знать.

0 голосов
/ 14 июня 2011

Хотя предложение Оуэнса является отличным, есть еще один вариант, который вы можете рассмотреть - описываемый вами репозиторий контента.

Поскольку вы имеете достаточный контроль над сервером, чтобы иметь возможность установить (некоммерческую) часть программного обеспечения, вас может заинтересовать Apache Jackrabbit * Repository Content.Он даже включает Java API, так что вы должны иметь возможность контролировать программное обеспечение (по крайней мере, в части добавления и извлечения контента) из ваших сервлетов.

На самом деле, если вы объедините эту идею с Owensи расширив его, вы можете разместить хранилище в пространстве Amazon S3 и использовать бесплатный экземпляр Amazon EC2 для размещения самого программного обеспечения.(Хотя я понимаю, что бесплатный экземпляр EC2 бесплатен только в течение первого года)

HTH

NB.Я уверен, что существуют другие репозитории контента, но JackRabbit - единственный, с которым я играл (хотя и кратко).

...