質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

5855閲覧

AWS上にあるzipファイルを解凍したい

renren643

総合スコア279

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2018/11/01 02:24

AWS上にあるzipファイルを解凍したいです

rails を使ってzipファイルをS3にアップしているのですが、
S3にあるzipファイルが解凍できません。
実際にAWSの画面を確認しても
https://s3-ap-northeast-1.amazonaws.com/evnevvjn/uploads/tmp/1541037878-40247-0006-6736/exhibit.zip」のフォルダは確実にあるはずなのに、

https://s3-ap-northeast-1.amazonaws.com/evnevvjn/uploads/tmp/1541037878-40247-0006-6736/exhibit.zip not found」が帰ってきます。

Zip::File.open("https://s3-ap-northeast-1.amazonaws.com/evnevvjn/uploads/tmp/1541037878-40247-0006-6736/exhibit.zip") do |zip| zip.each do |entry| zip.extract(entry, Rails.root.join('public/' + 'uploads') + dest + entry.name)#第一引数の解凍済みzipファイルを第二引数に保存 end end

イメージ説明

ファルダはありますが、以下のS3の画面で「開ける」を開けるを選択すると、「ポップアップがブロックされました」と表示されます。これはなあにか関係しているのでしょうか?
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

いきなりURLを渡すのではなく、いったんローカルに落としてきてからZip::Fileを使ってみるとどうでしょうか。
Tempfileを使ったサンプルは以下です。

ruby

1require 'open-uri' 2require 'zip' 3require 'tempfile' 4 5url = "https://s3-ap-northeast-1.amazonaws.com/evnevvjn/uploads/tmp/1541037878-40247-0006-6736/exhibit.zip" 6 7Tempfile.create("zipfile") do |f| 8 path = f.path 9 10 open(url) do |f2| 11 File.write(path, f2.read) 12 end 13 14 Zip::File.open(path) do |zip| 15 zip.each do |entry| 16 zip.extract(entry, Rails.root.join('public/' + 'uploads') + dest + entry.name)#第一引数の解凍済みzipファイルを第二引数に保存 17 end 18 end 19 20end

これでだめな場合、そもそもダウンロードできない可能性もあるので、まずは以下のようなスクリプトで、ダウンロードできるかだけ確認した方がよいかもです。

ruby

1require 'open-uri' 2 3url = "https://s3-ap-northeast-1.amazonaws.com/evnevvjn/uploads/tmp/1541037878-40247-0006-6736/exhibit.zip" 4 5open(url) do |f2| 6 File.write("tmp.zip", f2.read) 7end

投稿2018/11/02 14:39

takahashim

総合スコア1877

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問