我正在使用 Fog gem 生成预签名的 url。我可以成功地执行此操作以获得对该文件的读取访问权限。这就是我所做的:
fog_s3 = Fog::Storage.new({
:provider => 'AWS',
:aws_access_key_id => key,
:aws_secret_access_key => secret
})
object_path = 'foo.wav'
expiry = Date.new(2014,2,1).to_time.to_i
url = fog_s3.directories.new(:key => bucket).files.new(:key => object_path).url(expiry,path_style: true)
但是当我尝试上传文件时这不起作用。有没有办法指定 http 动词,使其成为 PUT 而不是 GET?
EDIT我看到一个方法:put_object_url
这可能有帮助。我不知道如何访问它。
Thanks
EDIT根据您的建议:
它很有帮助 - 它让我得到了 PUT - 而不是 GET。但是,我仍然遇到问题。我添加了内容类型:
headers = { "Content-Type" => "audio/wav" }
options = { path_style: true }
object_path = 'foo.wav'
expiry = Date.new(2014,2,1).to_time.to_i
url = fog_s3.put_object_url(bucket,object_path, expiry, headers, options)
但网址不包含Content-Type
在里面。当从 HTML 中的 Javascript 完成时,我得到了Content-Type
在网址中,这似乎有效。这是雾的问题吗?或者我的标题不正确?