Rails 中的回形针文件处理[重复]

问题描述 投票:0回答:2

我运行回形针来上传文件并将文件存储在服务器上的非公共目录中。现在我希望能够直接读取文件,或者将它们输入到诸如 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 进行处理。我还希望最终能够以某种方式将这些文件直接提供给用户,以允许安全下载。

我努力寻找了一些关于这一切的文档,但还没有找到任何真正解释它的东西。我已经到了这样的地步:只是随机地在这里或那里抛出代码,并希望某些东西能起作用,但很少能起作用。任何可以提供的帮助/指导将不胜感激!!!

马克

ruby-on-rails ruby text paperclip
2个回答
3
投票

我认为io适配器可以支持读取

Paperclip.io_adapters.for(@census.censusfile).read

所以

<% Paperclip.io_adapters.for(@census.censusfile).read do |line| %>
  <%= line %>
<% end  %>

0
投票

使用

copy_to_local_file
方法。这将返回一个文件对象,您可以像普通文件一样
read

© www.soinside.com 2019 - 2024. All rights reserved.