Ruby on Rails - 清理url参数

时间:2010-10-19 23:04:04

标签: ruby-on-rails ruby url amazon-s3 clean-urls

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

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

谢谢!

1 个答案:

答案 0 :(得分: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,一旦您将模块连接到上面的安装,就会告诉网络服务器直接将文件流式传输到客户端,但他们的网址与您的应用程序的正常请求(/ users /:id / avatar或其他)保持相同,因为没有重定向。