Saya memiliki URL ke gambar yang ingin saya simpan secara lokal, sehingga saya dapat menggunakan Paperclip untuk menghasilkan thumbnail untuk aplikasi saya. Apa cara terbaik untuk mengunduh dan menyimpan gambar? (Saya mencari penanganan file ruby tetapi tidak menemukan apa pun.)
ruby-on-rails
ruby
file-handling
Alok Swain
sumber
sumber
IO.copy_stream(open('http://example.com/image.png'), 'destination.png')
require 'open-uri'
, hanya menggunakan kode di bawahnyaVersi yang lebih pendek:
Untuk menjaga nama file yang sama:
sumber
Jika Anda menggunakan PaperClip, pengunduhan dari URL sekarang ditangani secara otomatis.
Dengan asumsi Anda punya sesuatu seperti:
Pada model Anda, cukup tentukan gambar sebagai URL, sesuatu seperti ini (ditulis secara disengaja):
Anda mungkin ingin memasukkan metode ini ke dalam model Anda. Ini juga akan bekerja dengan baik pada sistem file sementara Heroku.
Penjepit kertas akan mengambilnya dari sana.
sumber: dokumentasi penjepit kertas
sumber
Saya pikir ini adalah cara yang paling jelas:
sumber
Lihat Net :: HTTP di perpustakaan standar. Dokumentasi menyediakan beberapa contoh tentang cara mengunduh dokumen menggunakan HTTP.
sumber
Kernel#open
memungkinkan tidak hanya akses file tetapi juga proses pemanggilan dengan awalan simbol pipa (misalnya,open("| ls")
). Jadi, itu dapat menyebabkan risiko keamanan yang serius dengan menggunakan input variabel ke argumenKernel#open
.