Go言語のHTTPサーバー機能を使って静的ファイルをダウンロードするにはどうすればよいですか?

王林
リリース: 2023-07-30 10:34:48
オリジナル
1145 人が閲覧しました

Go 言語で HTTP サーバー機能を使用して静的ファイルをダウンロードするにはどうすればよいですか?

Web アプリケーションを開発する場合、PDF ファイル、画像、ビデオなどの特定のリソース ファイルをダウンロードできる機能をユーザーに提供するなど、ファイル ダウンロード機能を実装する必要がある場合があります。 Go 言語の net/http パッケージは、HTTP サーバー機能を実装する簡単な方法を提供し、ファイルをダウンロードする機能を提供します。

以下の例を使用して、Go 言語の HTTP サーバー関数を使用して静的ファイルをダウンロードする方法を示します。

最初に、必要なパッケージをインポートする必要があります:

package main import ( "io/ioutil" "net/http" "os" )
ログイン後にコピー

次に、ユーザー要求を処理してファイルの内容を返す処理関数を定義する必要があります。http.ServeContent関数を使用して、ファイルのコンテンツを読み取り、送信できます。

func downloadHandler(w http.ResponseWriter, r *http.Request) { filePath := "./files/sample.txt" file, err := os.Open(filePath) if err != nil { http.Error(w, "File not found.", http.StatusNotFound) return } defer file.Close() fileInfo, err := file.Stat() if err != nil { http.Error(w, "File stat error.", http.StatusInternalServerError) return } http.ServeContent(w, r, fileInfo.Name(), fileInfo.ModTime(), file) }
ログイン後にコピー

上記のコードでは、downloadHandler関数は 2 つのパラメーターを受け取ります:w http.ResponseWriterr *http.Requestクライアントに応答を返し、クライアントの要求情報を受信します。

この関数では、まずos.Open関数でファイルを開き、エラーが発生するかどうかを確認し、エラーが発生した場合には、クライアントにステータス コード 404 を返します。

次に、file.Stat関数を使用して、ファイル名や変更時刻などのファイル情報を取得します。

最後に、http.ServeContent関数を通じてファイルのコンテンツをクライアントに送信します。この関数は、ResponseWriterRequest、ファイル名、ファイル変更時刻、ファイルの内容をパラメータとして受け取り、ファイルの内容の読み取りと送信を完了します。

最後に、HTTP サーバーにダウンロード処理関数を登録し、指定されたポートをリッスンする必要があります。

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

上記のコードでは、http.HandleFunc関数を使用して、HTTP サーバーの処理関数としてdownloadHandler関数を登録しています。この関数は、パスと処理関数の 2 つのパラメータを受け取ります。

最後に、http.ListenAndServe関数を使用して、指定されたポートをリッスンします。この関数は、リッスン アドレスとプロセッサという 2 つのパラメーターを受け取ります。

最後に、コマンドgo run main.goを使用してプログラムをローカルで実行し、ブラウザでhttp://localhost:8080/downloadにアクセスします。sample.txtファイルをダウンロードできます。

この記事の例では、Go 言語の HTTP サーバー関数を使用して静的ファイルをダウンロードする方法を示します。http.ServeContent関数によるファイルの読み取りと送信が完了し、ユーザーが必要なリソース ファイルを簡単にダウンロードできるようになりました。同時に、ダウンロード処理機能を HTTP サーバーに登録し、指定したポートをリッスンすることで、完全なダウンロード機能を実現する方法も示しました。この記事がお役に立てば幸いです。

以上がGo言語のHTTPサーバー機能を使って静的ファイルをダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!