You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Ruby检查指定URL(含Cloudinary链接)中的图片是否存在?

How to Check if a Cloudinary Image/Resource Exists Using Ruby

Got it, here are two solid ways to verify if a Cloudinary resource exists using Ruby—one that’s quick and doesn’t require API credentials, and another that uses Cloudinary’s official SDK for more reliable results.

Method 1: Use a HEAD Request (No SDK Required)

This approach sends a lightweight HEAD request to the resource URL to check the response status. It avoids downloading the entire file, making it fast and efficient.

require 'net/http'
require 'uri'

def cloudinary_resource_exists?(url)
  uri = URI(url)
  response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
    http.head(uri.path + uri.query.to_s)
  end
  # Return true if the response is a success (e.g., 200 OK)
  response.is_a?(Net::HTTPSuccess)
end

# Usage example: Replace {public_id} with your actual resource ID
image_url = "http://res.cloudinary.com/dm1hql92i/raw/upload/c_fill,h_200,w_200/your_public_id_here"
puts cloudinary_resource_exists?(image_url) # Outputs true if exists, false otherwise

Notes:

  • If your Cloudinary URL uses HTTPS, the use_ssl flag will automatically handle that.
  • Cloudinary typically returns a 404 Not Found for non-existent resources, but keep in mind CDN caching might occasionally affect results.

Method 2: Use the Cloudinary Ruby SDK (Authoritative Check)

For the most accurate result, use Cloudinary’s official SDK to query their API directly. This requires your Cloudinary credentials but eliminates any CDN-related ambiguity.

Step 1: Install the SDK

Add the gem to your project:

gem install cloudinary
# Or add to your Gemfile: gem 'cloudinary'

Step 2: Implement the Check

require 'cloudinary'

# Configure Cloudinary (you can also set these via environment variables)
Cloudinary.config do |config|
  config.cloud_name = 'dm1hql92i'
  config.api_key = 'your_api_key'
  config.api_secret = 'your_api_secret'
end

def cloudinary_resource_exists_sdk?(public_id, resource_type = 'raw')
  begin
    # Fetch resource details from Cloudinary's API
    Cloudinary::Api.resource(public_id, resource_type: resource_type)
    true
  rescue Cloudinary::ApiError => e
    # Return false only if the error is a "Not found" response
    e.message.include?('Not found') ? false : raise
  end
end

# Usage example: Check for a raw resource (match your URL's /raw/upload/ path)
puts cloudinary_resource_exists_sdk?('your_public_id_here') # Outputs true/false

Notes:

  • Adjust the resource_type parameter if you’re checking images instead of raw files (use resource_type: 'image' for URLs with /image/upload/).
  • This method is the most reliable because it directly checks Cloudinary’s database, not just the CDN.

内容的提问来源于stack exchange,提问作者fanadewi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:42:07