2009-07-22 198 views
2

我正在尝试编写脚本来检查给定的URL是否存在,并返回它自己(如果存在)。文件类型将是.jpg和.mov。Ruby:检查远程服务器上是否存在文件

我目前使用open-uri标准库,但我很确定我应该使用别的东西。

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

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

回答

5

你可以使用像标准库'net/http'或其他类似cURB绑定的HTTP库,但基本上你只是想发出一个HTTP HEAD请求,它只是给你头部信息而不是实际的响应身体。如果HEAD请求成功,你会得到一个HTTP 200,如果它不存在,你会得到一个HTTP 404(你可以得到其他的响应,比如内部错误(HTTP 500)以及你决定如何处理这些HTTP请求)。

长话短说,使用HTTP HEAD。

+1

你会发现一些服务器对HTTP HEAD反应不佳,所以它不是100%。 – 2009-07-22 15:29:43

相关问题