Вопрос

У меня есть приложение Rails, чтобы, когда пользователь загружает изображение, он отправляется непосредственно на S3 Amazon. Я должен указать адрес перенаправления в коде форм. После завершения изображения Amazon перенаправляет пользователь www.redirect_address.com/?bucket=[BUCKET]&key=[KEY]&etag=[ETAG]

мне нужно bucket и key Информация для обработки изображения, но есть ли способ для пользователя не видеть все эти параметры в адресной коробке. Способ, которым я все еще могу получить всю эту информацию, и весь пользователь видит www.redirect_address.com

Спасибо!

Тим

Это было полезно?

Решение

Хороший подход здесь состоит в том, чтобы использовать потоковое интерфейс веб-сервера через X Отправить файл Addons (см.: nginx xsendfile. или apache mod_xsendfile.), а в рельсах у вас будет действие, такое как:

def avatar
  if @user.avatar?
    response.headers["X-Accel-Redirect"] = @user.s3_avatar_url
    head :ok
  else
    head :error # or display a default image , whatever you want here
  end
end

И это устанавливает заголовок HTTP X-Accel-Redirect Что отправляется в Apache / Nginx с вашего сервера приложений, который, как только у вас установлен ссылка модуля на вышеупомянутой, прокажите веб-серверу, чтобы протокоть файл непосредственно к клиенту, но URL для них остается такой же, как обычный запрос к вашему приложению (/ пользователям /: идентификатор / аватар или что-то еще), потому что нет перенаправления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top