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 %>