nea*_*lob 2 ruby-on-rails amazon-s3 amazon-web-services aws-sdk
我正在尝试通过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
Run Code Online (Sandbox Code Playgroud)
谁能给我一个有关如何触发此文件下载的线索?提前谢谢了。
我对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')
Run Code Online (Sandbox Code Playgroud)
当&response-content-disposition=value出现在已验证GET请求的查询字符串中时,S3将该值作为Content-Disposition:响应中的标头返回。“附件”表示“下载,不显示”,文件名是浏览器通常使用的文件名,或者如果显示“另存为”提示,则提供默认文件名...因此用户下载的文件名可以不同而不是存储在S3中的文件名。'attachment;<space>filename=<target-filename>'是一个字符串,您将希望构建该字符串以包含一些有意义的内容,而不是“ myfile.jpg”。
| 归档时间: |
|
| 查看次数: |
1312 次 |
| 最近记录: |