加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Carrierwave图像扩展

发布时间:2020-12-16 23:12:12 所属栏目:百科 来源:网络整理
导读:我正在尝试确定远程网址是否是图片.大多数网址都有.jpg,.png等…但有些图像,如谷歌图片,没有扩展名……即. https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSbK2NSUILnFozlX-oCWQ0r2PS2gHPPF7c8XaxGuJFGe83KGJkhFtlLXU_u 我尝试使用FastImage来确定u
我正在尝试确定远程网址是否是图片.大多数网址都有.jpg,.png等…但有些图像,如谷歌图片,没有扩展名……即.

https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSbK2NSUILnFozlX-oCWQ0r2PS2gHPPF7c8XaxGuJFGe83KGJkhFtlLXU_u

我尝试使用FastImage来确定url是否是图像.当任何URL被送入它时它可以工作……

如何确保远程URL使用FastImage,上传的文件使用白名单?这是我的上传者的内容.无法识别Avatar_remote_url …我在上传器中如何操作来测试远程网址而不是常规文件.

def extension_white_list
    if defined? avatar_remote_url && !FastImage.type(CGI::unescape(avatar_remote_url)).nil?
      # ok to process
    else # regular uploaded file should detect the following extensions
      %w(jpg jpeg gif png)
    end
  end

解决方法

如果您需要使用的是一个类似的URL,您可以向服务器发送HEAD请求以获取图像的内容类型.从那里你可以获得扩展
require 'net/http'
require 'mime/types'

def get_extension(url)
  uri = URI.parse(url)
  http = Net::HTTP.new(uri.host,uri.port)
  http.use_ssl = true if uri.scheme == 'https'
  request = Net::HTTP::Head.new(uri.request_uri)
  response = http.request(request)
  content_type = response['Content-Type']
  MIME::Types[content_type].first.extensions.first
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读