Ruby:检查远程服务器上是否存在文件
问题描述:
我正在尝试编写脚本来检查给定的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
正如你所看到的,这是非常低效的,因为它读取整个文件。其他解决方案?
答
你可以使用像标准库'net/http'或其他类似cURB绑定的HTTP库,但基本上你只是想发出一个HTTP HEAD请求,它只是给你头部信息而不是实际的响应身体。如果HEAD请求成功,你会得到一个HTTP 200,如果它不存在,你会得到一个HTTP 404(你可以得到其他的响应,比如内部错误(HTTP 500)以及你决定如何处理这些HTTP请求)。
长话短说,使用HTTP HEAD。
你会发现一些服务器对HTTP HEAD反应不佳,所以它不是100%。 – 2009-07-22 15:29:43