我无法弄清楚我在这里做错了什么。我使用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
答案 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)