# frozen_string_literal: true
require 'open-uri'
module Utils
class Download
def self.download_image(url, dir)
save_path = Rails.root.join('public', dir)
unless Dir.exists? save_path
Dir.mkdir save_path
end
#获取图片名称
last_index = url.rindex('/') + 1
image_name = url[last_index..-1]
save_name = "https://" + ENV.fetch('DEFAULT_HOST') + '/' + dir + image_name
path_name = Rails.root.join('public', dir, image_name)
open(url) do |u|
File.open(path_name, 'wb') { |f| f.write(u.read) }
end
save_name
end
end
end
url: 远程图片地址
dir: 保存路径
有些网站图片无后缀,我直接使用了jpg后缀,
def self.download_image(url, dir)
save_path = Rails.root.join('public', dir)
unless Dir.exists? save_path
Dir.mkdir save_path
end
#获取图片名称
last_index = url.rindex('/') + 1
base_image_name = url[last_index..-1]
# 对于今日头条或秀米这样的没有后缀的图片,强制使用jpg
last_index_arr = last_index.to_s.split('.')
if last_index_arr.length > 1
last_index = last_index + 1
image_name = base_image_name
else
image_name = base_image_name + ".jpg"
end
puts image_name
save_name = "https://" + ENV.fetch('DEFAULT_HOST') + '/' + dir + image_name
path_name = Rails.root.join('public', dir, image_name)
open(url) do |u|
File.open(path_name, 'wb') { |f| f.write(u.read) }
end
save_name
end