ruby 下载图片

# 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值