2009-07-22 201 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

相關問題