Как загружать файлы напрямую в S3 без использования локального хранилища?

4 нояб. 2011 г., 14:48:16
Просмотры: 17.2K
Голосов: 18

Я ищу плагин для WordPress, который позволит загружать файлы напрямую в Amazon S3, минуя локальное хранилище.

Мы - веб-студия, которая активно разрабатывает сайты на CMS совместно с клиентами. Это означает, что мы часто итерируем сайты, на которые клиенты загружают файлы. В наших проектах мы храним базу данных и код в git-репозитории, что упрощает перенос кода с продакшена на локальную среду разработки.

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

Поэтому я подумал, что вместо перемещения файлов мы могли бы использовать сторонний сервис для их хранения. Можно использовать Amazon S3 с плагином для резервного копирования, но я предпочел бы загружать файлы в S3 прямо через админ-интерфейс WordPress.

Вторая причина, по которой мне нужен такой плагин - мы размещаем блоги с 20-30 ГБ изображений в высоком разрешении. Хранить эти файлы на нашем сервере дорого, дешевле использовать для этого Amazon S3.

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

Заранее благодарю за ответы!

5
Комментарии

Вот так http://wordpress.org/extend/plugins/tantan-s3/?

v0idless v0idless
4 нояб. 2011 г. 15:36:12

Вместо полного ответа, который я не могу оставить в данный момент: Сохранение медиафайлов WordPress в Amazon S3 (Тизер)

User User
4 нояб. 2011 г. 16:29:23

@v0idless, по вашей ссылке похоже, что это сработает. Мне нужно будет это проверить.

tarasm tarasm
4 нояб. 2011 г. 17:49:06

@AdamBackstrom, ваша ссылка выглядит так, будто это точно такой же сценарий, как у меня, но я не уверен насчет его решения. Мне нужно будет изучить его внимательнее.

tarasm tarasm
4 нояб. 2011 г. 17:49:58

Почему ты не оставляешь ответы?

tarasm tarasm
4 нояб. 2011 г. 17:50:31
Все ответы на вопрос 5
5

У меня была такая же задача: на моем VPS не хватало места на диске, но я все равно хотел управлять фотографиями через WordPress. Плагин tantan-s3 не подошел, так как он сохраняет копию каждой фотографии локально.

Можно абстрагировать хранение файлов с помощью PHP stream wrappers, но некоторые части ядра WordPress несовместимы с этим. Поэтому короткий ответ: WordPress изначально не поддерживает достаточный функционал для реализации этого.


Продолжим: тикет WordPress #18543 посвящен исправлению ядра для поддержки stream wrappers в функциях imagejpeg() (и других GD-функциях) и wp_mkdir_p().

Zend_Service_Amazon_S3_Stream предоставляет stream wrapper для S3, но он работает неэффективно, запрашивая по умолчанию по 8192 байта за раз вместо буферизации большего объема, что приводит к огромному количеству запросов. Я сидел на этом несколько месяцев, так что могу просто выпустить свои модификации в мир. Этот патч работает для Zend Framework 1.11.10.

Завершает картину плагин для преобразования пути загрузки в S3.

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

4 нояб. 2011 г. 19:26:04
Комментарии

Если у вас есть VPS, почему бы просто не подключить S3 bucket и не установить этот путь как директорию для загрузок?

v0idless v0idless
4 нояб. 2011 г. 19:29:36

@v0idless, отличный вопрос. Это не было бы переносимым решением, но я думаю, что такой подход сработает. Подключение бакета всё равно потребует плагина для преобразования URL от Адама. Я прав?

tarasm tarasm
4 нояб. 2011 г. 20:26:56

В настройках медиа WordPress есть возможность установить директорию для загрузок: Store uploads in this folder, что должно подойти для подключенного бакета. Я думаю, плагин Адама добавляет протокол s3:// к пути загрузки для поддержки потоков.

v0idless v0idless
4 нояб. 2011 г. 20:35:12

@tarasm Я считаю, что фильтр pre_option_upload_url_path является ключевым для пути загрузки.

User User
4 нояб. 2011 г. 21:15:57

@AdamBackstrom Думаю, это максимально приближенный к окончательному ответу вариант на данный момент. Не могли бы вы обновить этот вопрос, если ситуация изменится?

tarasm tarasm
7 нояб. 2011 г. 18:20:42
0

Ознакомьтесь с плагином WP2Cloud. Загружаемые файлы не хранятся локально — они сразу отправляются в Amazon S3.

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

3 авг. 2012 г. 08:59:54
0

Был плагин под названием WP Read-Only, который загружал файлы на Amazon S3. Я использую его на своем сервере Heroku, потому что статические файлы нельзя хранить на сервере Heroku.

8 янв. 2014 г. 16:45:37
1

Попробуйте это: http://wordpress.org/extend/plugins/tantan-s3/ ^^

4 нояб. 2011 г. 18:12:17
Комментарии

В последний раз, когда я смотрел на tantan-s3, он хранил загрузки локально, только зеркалируя их в Amazon S3.

User User
4 нояб. 2011 г. 18:47:53
0

Существует плагин, который может решить эту задачу. Он позволяет загружать файлы напрямую в S3 из админ-панели WordPress или использовать шорткод для встраивания браузера S3 на фронтенд-страницы, чтобы пользователи могли загружать файлы в S3. Вы можете контролировать, кто может загружать, удалять, создавать папки и т. д. Это очень удобно.

Вот ссылка: WordPress S3 Browser

8 янв. 2014 г. 11:15:30