ブラウザ上からzipファイルをアップし、S3に保存し,ファイル展開をしたいです。(rails+fog+CarrierWave使用)
(ローカルでは成功しています)
def create @account = Account.find(params[:account_id]) @item = @account.items.new(item_params) @item.csv = item_params[:csv] dest = @item.csv.hash.to_s + "/" Zip::File.open(@item.csv.current_path) do |zip| zip.each do |entry| zip.extract(entry, Rails.root.join('public/' + 'uploads') + dest + entry.name)#第一引数の解凍済みzipファイルを第二引数に保存 end end end
しかし、以下のようなエラーが出ます。
S3にtmpファイルはアップできています。
(展開するファイルの元となるuploads/tmp/1541036446-40117-0002-9261/exhibit.zipはS3にあります)
S3を使わずに行なうと、pulic以下にuploadsフォルダが作成されるのですが、
このエラーはローカルのpublic以下に保存されるはずのuploads/tmp/1541036446-40117-0002-9261/exhibit.zipがないから出ているエラーで、
@item.csv.current_pathの前になにかをつけてS3上にある対象のバケットへのpathを渡せば解決するのではないかと思うのですが、
controllerからS3上にある対象のバケットへのpath(この場合だと、自分のバケット名/uploads/tmp/1541036446-40117-0002-9261/exhibit.zip)を取得する方法はありますか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。