我运行回形针来上传文件并将文件存储在服务器上的非公共目录中。现在我希望能够直接读取文件,或者将它们输入到诸如 axlsx 之类的 gem 中。即使只是简单地循环抛出一个文本文件,我也在挣扎,并认为我错过了一些基本的东西(通常是这种情况)。
这是我第一次尝试打开文件:
application.rb 中的回形针配置:
config.paperclip_defaults = {:storage => :fog, :fog_credentials => {:provider => "Local", :local_root => "#{Rails.root}/secured_storage"}, :fog_directory => "", :fog_host => "localhost"}
型号:
class Census < ActiveRecord::Base
has_attached_file :censusfile
validates_attachment_content_type :censusfile,
:content_type => ["application/octet-stream", "text/plain"]
end
在控制器中:
def processcensus
@census=Census.find(params[:id])
@[email protected]
end
视图中:
<% File.readlines(@file).read do |line| %>
<%= line %>
<% end %>
此操作失败,因为 Paperclip 返回的“path”是相对于其存储路径的路径,而不是完整路径。
更新:如果我添加目录(在本例中为路径中的“secured_storage”),它将按预期工作。例如:
@file="secured_storage/" + @census.censusfile.path
不确定这是否是解决这个问题的方法。如果是的话,有没有办法询问 Paperclip 文件存储在哪里??
我已经阅读了可以使用的地方:
Paperclip.io_adapters.for(@census.censusfile).path
但这似乎会将文件读入数组,除非我完全丢失了一些东西。我的目标是能够循环抛出文本文件以及将 Excel 文件提供给 axlsx 进行处理。我还希望最终能够以某种方式将这些文件直接提供给用户,以允许安全下载。
我努力寻找了一些关于这一切的文档,但还没有找到任何真正解释它的东西。我已经到了这样的地步:只是随机地在这里或那里抛出代码,并希望某些东西能起作用,但很少能起作用。任何可以提供的帮助/指导将不胜感激!!!
马克
我认为io适配器可以支持读取
Paperclip.io_adapters.for(@census.censusfile).read
所以
<% Paperclip.io_adapters.for(@census.censusfile).read do |line| %>
<%= line %>
<% end %>