使用presigned_url触发S3文件的下载

尼安德斯洛

我正在尝试通过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

谁能给我一个有关如何触发此文件下载的线索?提前谢谢了。

迈克尔-SQLbot

我对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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章