gpt4 book ai didi

ruby-on-rails - 使用 send_file 从 Amazon S3 下载文件?

转载 作者:数据小太阳 更新时间:2023-10-29 06:20:34 25 4
gpt4 key购买 nike

我的应用程序中有一个下载链接,用户应该可以从该链接下载存储在 s3 上的文件。这些文件将可通过类似以下形式的 url 公开访问

https://s3.amazonaws.com/:bucket_name/:path/:to/:file.png

下载链接在我的 Controller 中点击了一个 Action :

class AttachmentsController < ApplicationController
def show
@attachment = Attachment.find(params[:id])
send_file(@attachment.file.url, disposition: 'attachment')
end
end

但是当我尝试下载文件时出现以下错误:

ActionController::MissingFile in AttachmentsController#show

Cannot read file https://s3.amazonaws.com/:bucket_name/:path/:to/:file.png
Rails.root: /Users/user/dev/rails/print

Application Trace | Framework Trace | Full Trace
app/controllers/attachments_controller.rb:9:in `show'

该文件确实存在并且可以通过错误消息中的 url 公开访问。

如何允许用户下载 S3 文件?

最佳答案

您还可以使用 send_data .

我喜欢这个选项,因为你可以更好地控制。您没有将用户发送到 s3,这可能会让某些用户感到困惑。

我只是向 AttachmentsController 添加一个下载方法

def download
data = open("https://s3.amazonaws.com/PATTH TO YOUR FILE")
send_data data.read, filename: "NAME YOU WANT.pdf", type: "application/pdf", disposition: 'inline', stream: 'true', buffer_size: '4096'
end

并添加路线

get "attachments/download"

关于ruby-on-rails - 使用 send_file 从 Amazon S3 下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12277971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com