我有以下课程:
require 'uri'
class Images
IMAGE_NOT_FOUND = '/images/no_image.gif'
attr_accessor :url
def initialize(parameters = {})
@url = parameters.fetch(:url, IMAGE_NOT_FOUND)
@url = IMAGE_NOT_FOUND unless @url =~/^#{URI::regexp}$/
end
end
将URL
保留为图片。我已经检查了一些问题并添加了URL
验证,但我需要改进验证URLs
仅指向图像。如果验证失败,我想使用默认图像显示存在一些问题。
注意,URL
的当前验证不适用于相对路径。例如,以下url
作为图像源/images/image1.png
有效,但当前验证无法识别它。
有人可以使用URI
判断这是否可行?
答案 0 :(得分:2)
假设您只想验证指向图像类型文件的URLs
。
例如:http://www.xyz.com/logo.png
或http://www.xyz.com/logo.gif
或http://www.xyz.com/logo.jpg
以下是解决方案:
require 'uri'
class Images
IMAGE_NOT_FOUND = '/images/no_image.gif'
attr_accessor :url
def initialize(parameters = {})
@url = parameters.fetch(:url, IMAGE_NOT_FOUND)
@url = IMAGE_NOT_FOUND unless ((File.extname(@url) =~/^(.png|.gif|.jpg)$/ )||(@url =~ /^#{URI::regexp}$/))
end
end
以上示例仅允许网址指向扩展名为.png or .gif or .jpg
的图片,其余部分将设置为IMAGE_NOT_FOUND
。如果您愿意,可以添加更多扩展程序。