Ruby:检查远程服务器上是否存在文件

标签 ruby

我正在尝试编写一个脚本来检查给定的 URL 是否存在并返回自身(如果存在)。文件类型为 .jpg 和 .mov。

我目前正在使用 open-uri std 库,但我很确定我应该使用其他东西。

begin
    if (open(image_url).read)
        puts image_url
    end
    if (open(video_url).read)
        puts video_url
    end
  rescue
end

正如您所看到的,这是非常低效的,因为它读取整个文件。还有其他解决方案吗?

最佳答案

您可以使用标准库“net/http”等 HTTP 库或 cURB 绑定(bind)等其他库,但本质上您只想发出 HTTP HEAD 请求,该请求仅提供 header 信息,而不是实际的响应正文。如果 HEAD 请求成功,您将收到 HTTP 200,如果它不存在,您将收到 HTTP 404(您可能会收到其他响应,例如内部错误 (HTTP 500) 以及您决定如何处理这些响应,这取决于您)。

长话短说,使用 HTTP HEAD。

关于Ruby:检查远程服务器上是否存在文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1166058/

相关文章:

ruby - 什么是基于文件的源代码?

ruby - 如何使用 Mechanize 获取元素节点

regex - Ruby 正则表达式用哈希模式替换子字符串

arrays - 如何使用 Ruby 连接数组中的字符串

ruby-on-rails - 向提交按钮添加鼠标悬停效果 (Rails 3)

ruby - 在使用 Mechanize/Nokogiri 解析网页之前触发 ajax 请求/响应

ruby - 我正在尝试提取 html 页面上的每个 href 链接以使用 nokogiri 和 xpath 进行评估

ruby - 这是计算各个方向的纬度/经度 (NSEW) 的正确方法吗?

php - 是否可以在 ruby​​ 中做动态变量?

ruby - MiniMagick:使 png 部分不透明/如何使用 '-evaluate'