我设置了Rails应用程序,以便当用户上传图像时,它会直接发送到亚马逊的S3。我必须在表单代码中指定重定向地址。图像上传完成后,Amazon会将用户重定向到www.redirect_address.com/?bucket=[BUCKET]&key=[KEY]&etag=[ETAG]
我需要bucket
和key
信息来处理图片,但是有一种方法可以让用户不在地址栏中看到所有这些参数。我仍然可以获得所有信息并且所有用户看到的方式是www.redirect_address.com
谢谢!
添
答案 0 :(得分:0)
这里的一个好方法是通过x发送文件插件使用前端Web服务器进行流式处理(请参阅:nginx xsendfile或apache 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或其他)保持相同,因为没有重定向。