検索
ホームページバックエンド開発GolangGolang でマルチパート ファイルのアップロードを処理するにはどうすればよいですか?

Golang でのマルチパート ファイルのアップロードの処理には、multipart/form-data コンテンツ タイプを使用してリクエストを複数のパートに分割することが含まれます。 FormFile 関数と ParseMultipartForm 関数を使用してリクエストを解析します。アップロードされたファイルを取得して処理します。実際のケース: HTML フォームにファイル入力フィールドを追加します。 Go コードを使用して Echo フレームワークと吐き出すライブラリをインポートし、ファイル アップロード ハンドラーを定義します。リクエストフォームを解析してファイルを取得します。ファイルの詳細を印刷します。サーバーを実行し、アップロード機能をテストします。

Golang 中如何处理多部分文件上传?

Golang でのマルチパート ファイル アップロードの処理

はじめに

マルチパート ファイル アップロードは、ファイルを小さなチャンクに分割し、HTTP リクエストで転送する手法です。通常、大きなファイルをアップロードしたり、分割してアップロードしたりするために使用されます。この記事では、Golang でマルチパート ファイルのアップロードを処理する方法を説明し、簡単な実践例を示します。

Multipart/Form-Data

Multipart ファイルのアップロードでは、リクエストを複数の部分に分割するmultipart/form-data コンテンツ タイプを使用します。各セクションには、タイトル、コンテンツ タイプ、および実際のファイルのコンテンツを指すフォーム フィールドがあります。

リクエストを解析する

Golang でマルチパートリクエストを解析するには、FormFile 関数と ParseMultipartForm 関数を使用できます: FormFileParseMultipartForm 函数:

import (
    "fmt"
    "log"

    "github.com/labstack/echo/v4"
)

func upload(c echo.Context) error {
    // Read the form data
    form, err := c.MultipartForm()
    if err != nil {
        return err
    }

    // Retrieve the uploaded file
    file, err := form.File("file")
    if err != nil {
        return err
    }
    
    // Do something with the file
    
    return nil
}

实战案例

下面是一个简单的实战案例,展示如何在 Golang 中实现多部分文件上传:

HTML 表单:

<form action="/upload" method="POST" enctype="multipart/form-data">
   <input type="file" name="file">
   <button type="submit">Upload</button>
</form>

Go 代码:

// Install echo/v4 and github.com/go-spew/spew

// main.go
package main

import (
    "fmt"
    "github.com/labstack/echo/v4"
    "github.com/labstack/echo/v4/middleware"
    "github.com/go-spew/spew"
    "net/http"
)

func main() {
    e := echo.New()
    e.Use(middleware.Logger())

    e.POST("/upload", upload)

    e.Logger.Fatal(e.Start(":8080"))
}

func upload(c echo.Context) error {
    // Read the form data
    form, err := c.MultipartForm()
    if err != nil {
        return err
    }

    // Retrieve the uploaded file
    file, err := form.File("file")
    if err != nil {
        return err
    }
    
    // Print the file details
    spew.Dump(file)
    
    return c.JSON(http.StatusOK, map[string]interface{}{
        "message": "File uploaded successfully",
    })
}

测试上传

访问 /upload 表单并选择一个文件进行上传。成功上传后,控制台将打印已上传文件的详细信息。

提示

  • 使用 FormFile 函数可以获取单个文件。
  • 使用 ParseMultipartForm 函数可以获取多个文件和其他表单字段。
  • multipart/form-datarrreee
実際のケース 🎜🎜🎜以下は、Golang でマルチパート ファイルのアップロードを実装する方法を示す簡単な実践的なケースです: 🎜🎜🎜HTML form:🎜🎜rrreee🎜🎜Go code:🎜🎜rrreee🎜🎜Test Upload🎜🎜🎜Visit /uploadコード > フォームをクリックし、アップロードするファイルを選択します。アップロードが成功すると、アップロードされたファイルの詳細がコンソールに表示されます。 🎜🎜🎜ヒント🎜🎜<ul> <li>単一のファイルを取得するには、<code>FormFile 関数を使用します。 🎜
  • ParseMultipartForm 関数を使用して、複数のファイルと他のフォーム フィールドを取得します。 🎜
  • multipart/form-data は、画像や動画など、他の種類のファイルのアップロードにも使用できます。 🎜🎜
  • 以上がGolang でマルチパート ファイルのアップロードを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    Goroutinesの理解:Goの同時性に深く潜りますGoroutinesの理解:Goの同時性に深く潜りますMay 01, 2025 am 12:18 AM

    GoroutinesAreSareSareSareSormethodSthaturncurlyntingo、Enableing and LightweightConcurrency.1)theyRuntimeSimeSingMultiplexing、SountyStorunonFeweroSthReads.2)ゴルチンズを失ったことを許可します

    go:目的と使用法でのinit機能を理解するgo:目的と使用法でのinit機能を理解するMay 01, 2025 am 12:16 AM

    initistoistoInitializevariables、setupconutupurations、orforformndexedarysetupbe foreThemainfunctionexecutes.useinitby:1)inginginyourcodeTorunautorunaintalunain、2)KeepingItshortandpocusedonsimpletasks、3)ConsididiriveSusinginsingingingingingingingingingingingingingingingingingingingingingingsingpltassksを使用すると、

    GOインターフェイスの理解:包括的なガイドGOインターフェイスの理解:包括的なガイドMay 01, 2025 am 12:13 AM

    go interfacesaremethodsignaturesetsetsattypesmustimplement、unableingpolymorphism withintinheritance forcleaner、modularcode.theyareimplictilistifisisfiestified、houseforfflexibleapisanddeaupling、busrecarefulusoavoidoidoimoidimeerrororsypertety。

    GOのパニックからの回復:いつ、どのように使用するか()GOのパニックからの回復:いつ、どのように使用するか()May 01, 2025 am 12:04 AM

    Goで回復()関数を使用して、パニックから回復します。特定の方法は次のとおりです。1)回復()を使用して、延期関数でパニックをキャプチャして、プログラムのクラッシュを避けます。 2)デバッグの詳細なエラー情報を記録します。 3)特定の状況に基づいてプログラムの実行を再開するかどうかを決定します。 4)パフォーマンスに影響を及ぼさないように注意して使用します。

    「文字列」をどのように使用しますかGoで文字列を操作するパッケージ?「文字列」をどのように使用しますかGoで文字列を操作するパッケージ?Apr 30, 2025 pm 02:34 PM

    この記事では、弦の操作にGOの「文字列」パッケージを使用し、効率を高め、ユニコードを効果的に処理するための一般的な機能とベストプラクティスの詳細を説明します。

    「crypto」をどのように使用しますかGoで暗号化操作を実行するパッケージ?「crypto」をどのように使用しますかGoで暗号化操作を実行するパッケージ?Apr 30, 2025 pm 02:33 PM

    記事の詳細は、暗号化操作のためのGoの「暗号」パッケージ、安全な実装のための主要な生成、管理、およびベストプラクティスについて議論するためのパッケージ。

    「時間」をどのように使用しますかGOの日付と時間を処理するパッケージ?「時間」をどのように使用しますかGOの日付と時間を処理するパッケージ?Apr 30, 2025 pm 02:32 PM

    この記事では、現在の時間の取得、特定の時間の作成、文字列の解析、経過時間の測定など、日付、時間、およびタイムゾーンを処理するためのGoの「時間」パッケージの使用について詳しく説明しています。

    「反射」をどのように使用しますかGOの変数のタイプと値を検査するパッケージ?「反射」をどのように使用しますかGOの変数のタイプと値を検査するパッケージ?Apr 30, 2025 pm 02:29 PM

    記事では、可変検査と変更のためにGOの「反射」パッケージを使用して、方法とパフォーマンスの考慮事項を強調するために説明します。

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    VSCode Windows 64 ビットのダウンロード

    VSCode Windows 64 ビットのダウンロード

    Microsoft によって発売された無料で強力な IDE エディター

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

    AtomエディタMac版ダウンロード

    AtomエディタMac版ダウンロード

    最も人気のあるオープンソースエディター

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 英語版

    SublimeText3 英語版

    推奨: Win バージョン、コードプロンプトをサポート!