1

ファイルがオンラインに存在するかどうかを確認する最も迅速で簡単な方法は何ですか?

自分のファイル システムにファイルが存在するかどうか、または Web サイトが存在するかどうかを確認する方法は知っていますが、ファイルがオンラインに存在するかどうかを確認する方法はわかりません。どうすればいいですか?

以下のようなリンクがオンラインに存在することを確認したいと思います。

http://ccc-itgs2012.wikispaces.com/file/view/AP+Human+Geography+Gapminder.flv

4

4 に答える 4

1

HTTP の場合は、HTTP HEAD メソッドを使用します。コンテンツ ヘッダーのみを返す点を除いて、GET メソッドと同様に動作します。ファイルが存在しない場合、サーバーは 404 ステータス コードを返す必要があります。それ以外の場合は、ファイルが存在すると見なすことができます (コンテンツ ヘッダーからそのサイズを取得することもできます)。

編集

次のコードを使用できます。

Public Function ResourceExists(location As Uri) As Boolean
    If (Not String.Equals(location.Scheme, Uri.UriSchemeHttp, StringComparison.InvariantCultureIgnoreCase)) And (Not String.Equals(location.Scheme, Uri.UriSchemeHttps, StringComparison.InvariantCultureIgnoreCase)) Then
        Throw New NotSupportedException("URI scheme is not supported")
    End If

    Dim request = Net.WebRequest.Create(location)
    request.Method = "HEAD"

    Try
        Using response = request.GetResponse
            Return DirectCast(response, Net.HttpWebResponse).StatusCode = Net.HttpStatusCode.OK
        End Using
    Catch ex As Net.WebException
        Select Case DirectCast(ex.Response, Net.HttpWebResponse).StatusCode
            Case Net.HttpStatusCode.NotFound
                Return False
            Case Else
                Throw
        End Select
    End Try
End Function

使用法:

Dim itExists As Boolean = ResourceExists(New Uri("http://ccc-itgs2012.wikispaces.com/file/view/AP+Human+Geography+Gapminder.flv"))

これは呼び出し元のスレッドをロックするため、非同期メソッドにリファクタリングすることをお勧めします。

于 2013-01-25T15:08:25.983 に答える
1

ファイル システムでチェックするのと同じ方法でオンラインでチェックします。ファイルにアクセスしてみて、失敗した場合は例外を処理します (ところで、ファイル システムで File.Exists() を使用している場合は、おそらくそれは間違っています)。

唯一の追加の問題は、オンラインでチェックするときに、リソースの http 要求を送信し、実際にストリームを読む必要なく応答ストリームにアクセスできることです。つまり、ファイル全体をダウンロードして、リクエストが完了します。

于 2013-01-25T14:53:19.780 に答える
0

このコードは私のために働く

Public Function CheckAddress(ByVal URL As String) As Boolean
    Try
        Dim request As WebRequest = WebRequest.Create(URL)
        Dim response As WebResponse = request.GetResponse()
    Catch ex As Exception
        Return False
    End Try
    Return True
End Function
于 2015-12-21T16:27:12.810 に答える