0

我设置了一个 Rails 应用程序,这样当用户上传图像时,它会直接发送到亚马逊的 S3。我必须在表单代码中指定一个重定向地址。图片上传完成后,亚马逊会将用户重定向到www.redirect_address.com/?bucket=[BUCKET]&key=[KEY]&etag=[ETAG]

我需要bucketkey信息来处理图像,但是有没有办法让用户看不到地址框中的所有这些参数。我仍然可以获得所有这些信息并且所有用户看到的一种方式是www.redirect_address.com

谢谢!

蒂姆

4

1 回答 1

0

这里的一个好方法是通过 x 发送文件插件使用前端 Web 服务器的流式传输(请参阅:nginx xsendfileapache mod_xsendfile),在 Rails 中,您将执行以下操作:

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 仍然存在与对您的应用程序(/users/:id/avatar 或其他)的正常请求相同,因为没有重定向。

于 2010-10-20T01:27:25.473 回答