使用gem Paperclip下载文件



我想了解如何使用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)%>

最新更新