Не могли бы вы сделать простой запрос на изображение и проверить, если это 404? Это не идеально, но поймать большую часть. Зависит от того, как часто вы его запускаете. Если у вас нет доступа к файлам на сервере напрямую для проверки, то HTTP-запрос является единственным способом. Для скорости вы можете сделать только заголовок запроса. Нужен пример кода, позвольте мне выкопать один из них ...
Зависит от того, что вернет ваш сервер. Если вы можете получить заголовки и просто получите стандартную страницу 404, то вы можете проверить длину содержимого, чтобы убедиться, что он недостаточно велик для изображения, что звучит немного странно, но работать (есть лучший способ потом). Что-то вроде:
(взять и изменить с http://ruby -doc.org / stdlib / libdoc / net / http / rdoc / classes / Net / HTTP.html # M000682 ).
response = nil
Net::HTTP.start('www.example.com', 80) {|http|
response = http.head('/myimage.html')
}
# Assume anything with a content-length greater than 1000 must be an image?
# You will need to tweek/tune this to your server and your definition of what a good image is
p "Good image" unless response['content-length'] < 1000
В качестве альтернативы вы можете (и должны действительно делать это правильно) получить сообщение о статусе HTTP, так как именно так сервер сообщает вам, есть изображение или нет. Единственная проблема заключается в том, что вам, возможно, придется загрузить все это, поскольку я не знаю быстрого способа получить только HTTP-статус без выполнения всего запроса (подробности см. В методе запроса в документе, указанном выше).
Надеюсь, это поможет.