我正在尝试通过Rails应用访问S3服务器上的文件。目前,该应用程序能够presigned_url
通过aws-sdk v2 gem创建一个,然后重定向以显示该文件(我一直在使用图像作为文件)。这一切都很好,但我不只是想触发该文件的自动下载,而不仅仅是在浏览器中显示文件。
就重定向而言,我的代码如下:
def get
asset = current_user.assets.find_by_id(params[:id])
if asset
s3 = Aws::S3::Resource.new
bucketlink = s3.bucket(ENV['S3_BUCKET_NAME']).object(asset.uploaded_file.path).presigned_url(:get, expires_in: 3600)
redirect_to bucketlink
else
flash[:error]="Don't be cheeky! Mind your own assets"
redirect_to assets_path
end
end
谁能给我一个有关如何触发此文件下载的线索?提前谢谢了。
我对ruby一无所知,所以这只是个猜测。.但是基于我的专业知识,直接与REST API一起工作,并快速搜索了我想到的特定字符串的SDK文档,我认为您正在寻找像这样的东西:
bucketlink = s3.bucket(ENV['S3_BUCKET_NAME']).object(asset.uploaded_file.path).presigned_url(:get, expires_in: 3600, response_content_disposition: 'attachment; filename=myfile.jpg')
当&response-content-disposition=value
出现在已认证GET
请求的查询字符串中时,S3将该值作为Content-Disposition:
响应中的标头返回。“附件”表示“下载,不显示”,文件名是浏览器通常使用的文件名,或者如果显示“另存为”提示,则提供默认文件名...因此用户下载的文件名可以不同而不是存储在S3中的文件名。'attachment;<space>filename=<target-filename>'
是一个字符串,您将希望构建该字符串以包含一些有意义的内容,而不是“ myfile.jpg”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句