2010-12-16 1 views
1

У нас есть веб-приложение, которое должно сохранять загруженные изображения с помощью EdgeCast или Amazon S3. Для этого нам нужно сначала загрузить эти изображения в EdgeCast/S3. Есть несколько вариантов, я могу думать:Каков наилучший способ загрузки файлов в хранилище? (Amazon S3 или EdgeCast)

  1. Делают инлайн локон повторно загрузить, который будет загружать изображения с помощью желаемого EdgeCast/S3 API. Недостатком является то, что при одновременной загрузке загрузка сервера будет массивной.
  2. Queue re-uploads. Я знаю, что это возможно, но я не знаю, как это сделать.
  3. Не беспокойтесь о перезагрузке и отправьте в EdgeCast/S3 с конца клиента.
  4. Mount FTP-сервер EdgeCast's/S3 в файловую систему, а затем просто копировать загруженные файлы, позволяя FTP-демону делать все остальное.

Какое из лучших решений и есть ли другие? Я подозреваю, что это либо 1 или 2.

Edit: Мое приложение в PHP

+0

Добавлена ​​тега edgecast для вас. Где ваши изображения сейчас? На каком языке вы хотите выполнить загрузку (вы должны вызывать завиток откуда-то, даже если это сценарий bash). – 2010-12-16 11:51:04

+0

Я бы хотел загрузить в PHP – 2010-12-16 11:57:00

ответ

3

Не уверен EdgeCast, но я знаю, что с Amazon S3 лучший способ сделать это должен был отправить файл непосредственно файловый сервер. См. http://doc.s3.amazonaws.com/proposals/post.html

Делая это так, вы предоставили HTML FORM с некоторым полем, таким как идентификатор папки, имя файла, открытый ключ, timestamp и т. Д., Чтобы обеспечить его безопасность и только вы можете загрузить его на сервер. Сервер будет перенаправлять свой браузер после завершения загрузки с той страницы, на которую они перенаправили вас, чтобы проверить строку запроса, чтобы узнать, была ли загрузка успешной или нет, а затем записывать FileID в вашу БД.

Отлично подходит для снижения нагрузки на ваш сервер и дает пользователю более быстрый опыт, однако он может привести к сиротским файлам, если загрузка удалась, но вставка БД не удалась.

0

Что я делаю, это загрузка файлов в временный каталог, а затем запуск cron-скрипта, который запускает файлы на AWS, чтобы не вызывать процесс загрузки больше для конечного пользователя.

1

Хранилище EdgeCast поддерживает конфигурацию Rsync/sFTP для автоматической синхронизации содержимого с сервера хранения. EdgeCast также поддерживает настройку «обратный прокси» или «Продвижение клиента» для автоматического извлечения контента из другого веб-сервера в кеш. Вы можете использовать S3 в качестве местоположения этого источника для клиентов или использовать собственную службу облачного хранения EdgeCast или любой другой веб-сервер вне сети EdgeCast.

0

AWS предоставляет SDK for PHP для этого. Он даже поддерживает многопользовательскую загрузку, что является отличной новостью для разработчиков.

Следует отметить, что AWS SDK для PHP также выполняет повторную логику и (если вы используете Multipart, что вам нужно) может возобновить неудачные загрузки.