Rails send_data将纯文本路径作为文件传递

时间:2014-11-09 21:30:52

标签: ruby-on-rails

我无法弄清楚我在这里做错了什么。我使用Carrierwave允许用户将PDF文件上传到AWS。到目前为止,上传和记录创建顺利进行,在浏览S3存储桶时我能够下载并读取文件没问题。

我遇到的问题是" send_data"我的控制器中的函数正在触发文件下载,但不是AWS中的PDF,而是获取txt文件(带有PDF扩展名),其中只包含文件的路径。

这是我的代码,希望更有经验的眼睛会发现我的错误。

send_data @document.file.url.to_s, :type => "application/pdf", :disposition => "attachment", :filename => @document.title.to_s

1 个答案:

答案 0 :(得分:2)

查看这些方法的语义:

send_data(data, options = {})
send_file(path, options = {})

对于send_data(),您应该打开并阅读该文件,对于send_file(),您只能使用文件路径。

send_data(File.read(@document.file.url.to_s), type: "application/pdf", disposition:  "attachment", filename: @document.title.to_s)