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

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

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

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

Q&A

解決済

2回答

3734閲覧

Rubyでopen-uriを使って画像ファイルの取得時のファイル名

qa451

総合スコア8

Ruby

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

0グッド

0クリップ

投稿2017/11/22 21:04

Rubyでopen-uriを使って画像ファイルの取得を行おうとした場合、
読み込み元のURLと同じファイル名で(今回はexample.jpg)保存するには
"????.jpg"の部分を何と記述すればよいのでしょうか?

require "open-uri"
open("http://exmple.com/example.jpg") { |image|
File.open("????.jpg","wb") do |file|
file.puts image.read
end
}

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

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

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

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

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

guest

回答2

0

ベストアンサー

URLのパス部分は、URI.parse(~).pathで得られます。
パスのファイル名部分は、File.basename(~)で得られます。

Ruby

1require "uri" 2 3x = "http://exmple.com/example.jpg" 4y = File.basename(URI.parse(x).path) 5p y #=> "example.jpg"

投稿2017/11/22 23:23

編集2017/11/22 23:27
otn

総合スコア84423

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

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

qa451

2017/11/23 08:48

確かに取得できました! 本当にありがとうございました。
guest

0

「example.jpg」にしたいなら、当然、
「"????.jpg"」は「example.jpg」です。

同語反復っぽいのでもう少し言うと、
「example」という名前が使えるなら、
どこかで設定しているはずです。

今回は直接書き込んでいますが、
たとえばファイルから読み込んだりとか。

そこで、設定するときに変数に入れておいて、
後で取り出して使います。(下記コード参照)

ruby

1name = 'example' 2p url = name + '.com' #=> 'example.com' 3p img = name + '.jpg' #=> 'example.jpg'

追記:

ruby

1url = 'http://exmple.com/123.jpg' 2/[0-9]*.jpg/ =~ url 3p $& #=> '123.jpg'

コメントでコードを書くと読みづらいので、
本文の方に追記しました。(コメント参照)

URLのデータが先に用意されている場合、
部分文字列を分解して取り出す必要が出てくるでしょう。

そういうとき、上のコードのように、
正規表現がよく使われます。


追記2:

今回の場合、URIやFileのメソッドを使った方が楽で早いですね。
ただ、毎回必ずそれで決め打ちできるとは限らず、
ライブラリがない独自のデータ形式を扱う場面があるかもしれません。
文字列なら何でも汎用的に対応できるので、正規表現を紹介しました。

投稿2017/11/22 21:36

編集2017/11/23 01:56
LLman

総合スコア5592

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

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

qa451

2017/11/23 08:48

回答していただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問