Techioz Blog

Rails でのペーパークリップ ファイルの処理 [重複]

概要

ペーパークリップを実行して、サーバー上の非公開ディレクトリにファイルをアップロードして保存しています。次に、ファイルを直接読み取るか、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  %>

更新: ディレクトリを追加すると (この場合はパスの「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  %>