Golang 学習 Web アプリケーション ファイル処理

WBOY
リリース: 2023-06-24 10:11:37
オリジナル
1363 人が閲覧しました

インターネット技術の継続的な発展に伴い、Web アプリケーションの需要も増加しています。 Web アプリケーションの開発プロセスでは、ファイルのアップロード、ダウンロード、ファイル リストの表示など、ファイルとディレクトリの操作を処理する必要があることがよくあります。 Golang 言語では、ファイル処理は非常に基本的な知識ポイントであり、Web アプリケーションの開発に不可欠な部分です。この記事では、Golang が Web アプリケーションでファイル操作をどのように処理するかを紹介します。

1. ファイル操作

Golang でのファイル操作は主に os パッケージを通じて実装されます。 os パッケージは主に次のファイルおよびディレクトリ操作関数を提供します:

1. ファイルまたはディレクトリの作成
関数名: os.Create(name string) (*os.File, error)
関数の目的:name という名前のファイルを作成します。ファイルが存在しない場合は作成し、存在する場合はファイルをクリアします。

関数名: os.Mkdir(name string, perm os.FileMode) error
関数の目的: name という名前のディレクトリを作成します。perm パラメータはディレクトリのアクセス許可を指定します。

関数名: os.MkdirAll(path string, perm os.FileMode) error
関数の目的:複数レベルのディレクトリ、ディレクトリがすでに存在する場合、操作は実行されません

2. ファイルを開きます
関数名: os.Open(name string) (*os.File, error)
関数の目的: open a name はファイル名です、ファイルが存在しない場合はエラーが返されます

3. ファイルまたはディレクトリを削除します
関数名: os.Remove(name string) error
関数の目的: file または directory という名前のファイルを削除します。ファイルまたはディレクトリが存在しない場合は、エラーが返されます。

関数名: os.RemoveAll(path string) error
Function目的: 複数レベルのディレクトリを削除し、ディレクトリが存在しない場合はエラーを返します

4. ディレクトリの読み取り
関数名: os.ReadDir(dirname string) ([]os.DirEntry, error )
関数の目的: ディレクトリ dirname とディレクトリ情報の下にあるすべてのファイルを読み取り、タイプ os.DirEntry

2 のスライスを返します。ファイル アップロード

Web アプリケーションでは、ファイル アップロードは一般的な関数です。具体的な実装方法は以下のとおりです:

1. まず、アップロードしたファイルのinputタグをHTMLフォームに追加します

<input type="file" name="uploadfile" />
<input type="submit" value="上传文件" />
ログイン後にコピー

2. バックエンド コードで、アップロードされたファイル情報

file、handler、err を取得します。 = r.FormFile("uploadfile")
if err != nil {

//处理错误信息
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

r は http.Request タイプの変数です。ファイル情報は、 r.FormFile関数 取得に失敗した場合はエラーメッセージが返されます。

3. アップロードしたファイルを保存します

out, err := os.Create("./uploads/" handler.Filename)
if err != nil {

//处理错误信息
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

defer out.Close()

__、err = io.Copy(out, file)
if err != nil {

//处理错误信息
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

ファイル情報を取得したら、出力ファイルを作成し、io.Copy 関数を使用してアップロードされたファイルの内容を出力ファイルに書き込み、ファイルの保存操作を完了する必要があります。

3. ファイルのダウンロード

Web アプリケーションでは、ファイルのアップロードに加えて、ファイルのダウンロードも一般的な機能要件であり、具体的な実装方法は次のとおりです。 HTTP プロトコル経由 ファイル送信

filename := "./uploads/examplefile.txt"

f, err := os.Open(filename)

if err != nil {

//处理错误信息
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

defer f.Close()


header := make([]byte, 512)

if _, err := f.Read(header); err != nil {

//处理错误信息
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

fileStat、err := f.Stat()

if err != nil {

//处理错误信息
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

w.Header().Set("Content-Disposition", "attachment; filename=" ファイル名)

w.Header().Set("Content-Type", http.DetectContentType(header))

w.Header ().Set("Content-Length", strconv.FormatInt(fileStat.Size(), 10))

f.Seek(0, 0)

io.Copy(w, f)


この例では、まず os.Open 関数を通じてダウンロードするファイルを開き、次に http プロトコルを通じてファイルのコンテンツと関連情報を送信し、最後にファイルのコンテンツを HTTP 応答本文に書き込みます。 io.Copy 関数を使用してファイルのダウンロード操作を実行します。

4. ファイル一覧表示

Web アプリケーションでは、ファイル一覧表示も一般的な機能要件であり、次の方法で実現できます。ディレクトリ内のファイル ファイルリスト

dir, err := os.ReadDir("./uploads")

if err != nil {

//处理错误信息
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}


2. ファイルを走査する リストと表示

for _, d := range dir {

if !d.IsDir() {
    fmt.Fprintf(w, "<a href="/download?file=%s">%s</a><br>", d.Name(), d.Name())
}
ログイン後にコピー

}

この例では、指定されたディレクトリ内のファイル リストを取得します。 os.ReadDir 関数を使用すると、トラバーサル操作を通じて Web ページ上にファイルのリストが表示され、ファイルのダウンロード リンクが提供されます。

5. 概要

この記事の導入部を通じて、Golang 言語でのファイル操作は非常に基本的なものですが、Web アプリケーションの開発には不可欠な知識ポイントであることがわかります。ファイルのアップロード、ダウンロード、一覧表示などのファイル操作は一般的ですが、実際の開発ではWebアプリケーションのニーズに合わせて上記の方法を柔軟に適用する必要があります。

以上がGolang 学習 Web アプリケーション ファイル処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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