我想了解如何使用Paperclip下载文件。我将文件上传到本地存储。
这是模特:
class AFile < ActiveRecord::Base
has_attached_file :attach,
:url => "public/attach/:basename.:extension",
:path => ":rails_root/public/attach/:basename.:extension"
validates_attachment_content_type :attach, content_type: "text/plain"
end
查看show.html.erb:
<p>
<strong>AFile:</strong>
<%= @afile.name_file %>
</p>
<%= link_to 'Download', @afile.attach.url(:original, false) %> |
<%= link_to 'Edit', edit_afile_path(@afile) %> |
<%= link_to 'Back', afiles_path %>
我是这样的: File download using Paperclip 但它没有帮助。
但是当我点击下载时,则出现错误: 没有路线匹配[GET]“/public/attach/text.txt”
如何解决这个问题?为什么单击“下载”无法下载文件?
答案 0 :(得分:2)
Rails将/public
目录放在服务器Web根目录中。因此,/public/foo.txt
可以访问文件系统路径为http://localhost:3000/foo.txt
的文件,而不是http://localhost:3000/public/foo.txt
。
因此您需要更改附件的url
选项:
class AFile < ActiveRecord::Base
has_attached_file :attach,
:url => "/attach/:basename.:extension",
:path => ":rails_root/public/attach/:basename.:extension"
validates_attachment_content_type :attach, content_type: "text/plain"
end
答案 1 :(得分:-1)
我的下载文件解决方案如下:
<%= link_to 'Download', @afile.attach.url(:original),
download: @afile.attach.url(:original)%>