22

URL を確認してファイルが存在するかどうかを判断するコードを記述する必要があります。

現在、私はこれを実装しています:

error_code = 400;
response = Net::HTTP.get_response(URI(url));
return response.code.to_i < error_code;

しかし、ファイルをダウンロードするたびにファイルがダウンロードされるため、正しく機能していません。大きなファイルや多数のファイルがある場合、これは非常に遅くなります。

ダウンロードせずにファイルがリモート側に存在するかどうかを確認するにはどうすればよいですか?

4

3 に答える 3

6

このようなことをしてください

require "rest-client"

begin
  exists = RestClient.head("http://google.com").code == 200
rescue RestClient::Exception => error
  exists = (error.http_code != 404) 
end

次に、「存在する」は、存在するかどうかに応じたブール値です。これは、ファイルではなくヘッダー情報のみを取得するため、小さなファイルでも大きなファイルでも同じである必要があります。

于 2013-04-18T23:59:45.513 に答える
2

私はこのように書きます:

require 'net/http'

ERROR_CODE = 400

response = Net::HTTP.start('www.example.net', 80) do |http|
  http.request_head('/index.html') 
end

puts response.code.to_i < ERROR_CODE

trueの を取得した302ため、どの出力が出力されますかresponse.code

于 2013-04-19T01:02:38.453 に答える