Rails - возможно ли дать внешнему изображению локальный URL? - PullRequest
4 голосов
/ 30 марта 2012

Потому что невозможно загрузить файлы в приложение Heroku.

Я использую сервер хранения Amazon S3 для изображений.

Проблема только в том, что URL-адрес изображения относится к серверу Amazon S3.

Я бы хотел, чтобы оно было mydomain.com/myimage.png вместо s3.amazon.com/bucket/myimage.png

Как можно отобразить изображение на сервере amazon s3 при посещении примера: mydomain.com/myimage.png?

Ответы [ 2 ]

7 голосов
/ 31 марта 2012

Мое решение, я использую только png изображения:

На маршрутах:

match "/images/vind/:style/:id/:basename.png" => "public#image_proxy"

В публичном контроллере:

def image_proxy
  image_url = "http://s3-eu-west-1.amazonaws.com/konkurrencerher#{request.path}"
  response.headers['Cache-Control'] = "public, max-age=#{84.hours.to_i}"
  response.headers['Content-Type'] = 'image/png'
  response.headers['Content-Disposition'] = 'inline'
  render :text => open(image_url, "rb").read,
end
3 голосов
/ 30 марта 2012

Вы можете создать промежуточное программное обеспечение стойки, которое будет искать шаблон в URL (/ images / * или * .png), а при совпадении он будет действовать как прокси, запрашивая изображение из S3 и обслуживая контент.что он получает.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...