http.ServeFile 関数を使用して、指定したファイルを HTTP 応答の本文としてクライアントに送信します。

WBOY
リリース: 2023-07-24 23:53:08
オリジナル
1647 人が閲覧しました

http.ServeFile 関数を使用して、指定されたファイルを HTTP 応答の本文としてクライアントに送信します

Go 言語では、http パッケージを使用して HTTP サーバーを迅速に構築できます。ただし、場合によっては、ローカル ファイルを HTTP 応答の本文としてクライアントに送信する必要があります。この機能を実現するには、http.ServeFile 関数を使用します。

http.ServeFile 関数は、ResponseWriter と Request をパラメーターとして受け取り、指定されたファイルを HTTP 応答の本文としてクライアントに送信します。 HTTP リクエストの Range ヘッダーを自動的に処理して、ダウンロードの再開をサポートします。

次の例は、http.ServeFile 関数を使用してローカル ファイルをクライアントに送信する方法を示しています。

package main

import (
    "log"
    "net/http"
)

func serveFile(w http.ResponseWriter, r *http.Request) {
    http.ServeFile(w, r, "./example.txt")
}

func main() {
    http.HandleFunc("/", serveFile)
    log.Fatal(http.ListenAndServe(":8080", nil))
}
ログイン後にコピー

この例では、ローカル ポートをリッスンする HTTP サーバーを作成します。 8080。 HTTP リクエストを受信すると、serveFile 関数を呼び出してリクエストを処理します。 http.ServeFile 関数は、「./example.txt」ファイルをクライアントに送信するために、serveFile 関数で使用されます。必ず上記のサンプル コードをファイルとして保存し、ローカルの「example.txt」ファイルを同じディレクトリに配置してください。

このプログラムを実行した後、ブラウザで http://localhost:8080 にアクセスすると、ブラウザが「example.txt」ファイルをダウンロードしたことがわかります。 HTTP 応答の Content-Type ヘッダーはファイル拡張子に基づいて自動的に設定されるため、ファイルの種類は正しく識別されます。

http.ServeFile 関数は、ファイルをクライアントに送信するときに HTTP リクエストの Range ヘッダーを自動的に処理することに注意してください。クライアントがファイルの一部を要求した場合 (ダウンロードを再開する場合など)、http.ServeFile 関数はその部分のコンテンツのみを自動的に送信します。これにより、ファイル全体をロードすることなく、大きなファイルを複数のバッチに分けてダウンロードできます。

http.ServeFile 関数は、HTTP 応答の本文としてファイルをクライアントに送信するだけでなく、ファイルが存在しない、ファイルの読み取りに失敗したなどの異常な状況も自動的に処理し、対応する HTTP を返します。エラーコード。したがって、これらの状況を手動で処理する必要がなく、非常に便利です。

概要:
Go 言語では、http.ServeFile 関数を使用することで、ローカル ファイルを HTTP 応答の本文としてクライアントに簡単に送信できます。 HTTP リクエストの Range ヘッダーを自動的に処理するだけでなく、ファイルの存在なしやファイルの読み取り失敗などの例外も処理できます。これにより、完全に機能する静的ファイル サーバーを迅速に構築できます。

以上がhttp.ServeFile 関数を使用して、指定したファイルを HTTP 応答の本文としてクライアントに送信します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート