ローカルに保存したい画像へのURLがあるので、ペーパークリップを使用してアプリケーションのサムネイルを作成できます。画像をダウンロードして保存するための最良の方法は何ですか?(rubyファイルの処理を調べましたが、何も見つかりませんでした。)
152255 次
7 に答える
328
これを試して:
require 'open-uri'
open('image.png', 'wb') do |file|
file << open('http://example.com/image.png').read
end
于 2010-03-25T16:19:47.653 に答える
170
さらに短いバージョン:
require 'open-uri'
download = open('http://example.com/image.png')
IO.copy_stream(download, '~/image.png')
同じファイル名を維持するには:
IO.copy_stream(download, "~/#{download.base_uri.to_s.split('/')[-1]}")
于 2015-04-20T09:00:48.643 に答える
32
PaperClipを使用している場合、URLからのダウンロードが自動的に処理されるようになりました。
あなたが次のようなものを持っていると仮定します:
class MyModel < ActiveRecord::Base
has_attached_file :image, ...
end
モデルでは、画像を次のようなURLとして指定するだけです(意図的に手書きで書かれています)。
@my_model = MyModel.new
image_url = params[:image_url]
@my_model.image = URI.parse(image_url)
これをモデルのメソッドに入れたいと思うでしょう。これは、Herokuの一時ファイルシステムでも問題なく機能します。
ペーパークリップはそこからそれを取ります。
于 2013-03-05T15:27:56.570 に答える
16
これが最も明確な方法だと思います。
require 'open-uri'
File.write 'image.png', open('http://example.com/image.png').read
于 2017-10-01T20:12:58.213 に答える
11
標準ライブラリのNet::HTTPを確認してください。ドキュメントには、HTTPを使用してドキュメントをダウンロードする方法に関するいくつかの例が記載されています。
于 2010-03-25T13:42:17.017 に答える
4
おそらく最も簡単な方法:
require 'open-uri'
image_url = "https://i.imgur.com/ZWnhY9T.png"
IO.copy_stream(URI.open(image_url), 'destination.png')
于 2020-12-19T14:18:09.310 に答える
0
上記の例はすべて素晴らしいです。私の場合、URLの画像からダウンロードリンクを作成したかっただけです。
ダウンロード可能(ダウンロードフォルダー)にする場合は、コントローラーで次のコードを使用できます。
require 'open-uri'
file_type = url.to_s.split(".")[-1]
send_data open(url).read, filename: "some_name.#{file_type}", type: "image/#{file_type}", disposition: "attachment"
于 2021-08-24T09:18:57.717 に答える