我正在尝试确定远程网址是否是图片.大多数网址都有.jpg,.png等…但有些图像,如谷歌图片,没有扩展名……即.
我尝试使用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