这是我的控制器
Cotroller
def download
data = open(@attachment.file.url).read
@attachment.clicks = @attachment.clicks.to_i + 1
@attachment.save
send_data data, :type => @attachment.content_type, :filename => @attachment.name
end
示例:
@attachment.file.url = "http://my_bucket.cloudfront.net/uploads/attachment/file/50/huge_file.pptx"
我这样做了,但是如果 @attachement是一个巨大的文件(例如300MB),我的服务器崩溃了。 我想允许用户直接从我的AWS服务器在浏览器中下载文件吗?
2)提示:您是否建议从S3(存储它们)或使用CloudFront下载文件?
答案 0 :(得分:2)
如果您使用的是carrierwave gem,可以尝试使用它来跟踪点击次数
def download
@attachment.clicks.to_i += 1
@attachment.save
redirect_to @attachment.file.url(query: {"response-content-disposition" => "attachment;"})
end
参考: