我想了解如何使用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 %>
我确实喜欢这样:使用Paperclip下载文件但这无济于事。
但当我点击下载时,出现了一个错误:没有与[GET]"/public/attach/text.txt"匹配的路由
如何解决这个问题?为什么无法通过单击"下载"下载文件?
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
我下载文件的解决方案类似于:
<%= link_to 'Download', @afile.attach.url(:original),
download: @afile.attach.url(:original)%>