suchen
HeimBackend-EntwicklungGolangWie gehe ich mit dem Hochladen mehrteiliger Dateien in Golang um?

Die Verarbeitung mehrteiliger Datei-Uploads in Golang umfasst Folgendes: Aufteilen der Anfrage in mehrere Teile mithilfe des Inhaltstyps „multipart/form-data“. Verwenden Sie die Funktionen FormFile und ParseMultipartForm, um die Anfrage zu analysieren. Holen Sie sich die hochgeladene Datei und verarbeiten Sie sie. Praxisfall: Hinzufügen eines Dateieingabefelds zu einem HTML-Formular. Verwenden Sie Go-Code, um das Echo-Framework und die Spew-Bibliothek zu importieren und einen Datei-Upload-Handler zu definieren. Analysieren Sie das Anfrageformular und rufen Sie die Datei ab. Dateidetails drucken. Führen Sie den Server aus und testen Sie die Upload-Funktionalität.

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

Umgang mit dem mehrteiligen Datei-Upload in Golang

Einführung

Der mehrteilige Datei-Upload ist eine Technik, die Dateien in kleinere Teile aufteilt und sie in HTTP-Anfragen überträgt. Es wird normalerweise zum Hochladen großer Dateien oder zum Hochladen in Blöcken verwendet. Dieser Artikel führt Sie durch den Umgang mit mehrteiligen Datei-Uploads in Golang und bietet einen einfachen praktischen Fall.

Multipart/Form-Data

Beim Multipart-Datei-Upload wird der Inhaltstyp multipart/form-data verwendet, der die Anfrage in mehrere Teile unterteilt. Jeder Abschnitt verfügt über einen Titel, einen Inhaltstyp und ein Formularfeld, das auf den tatsächlichen Dateiinhalt verweist.

Anfragen analysieren

Um mehrteilige Anfragen in Golang zu analysieren, können Sie die Funktionen FormFile und ParseMultipartForm verwenden: 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
Eigentlicher Fall 🎜🎜🎜The Im Folgenden finden Sie einen einfachen praktischen Fall, der zeigt, wie das Hochladen mehrteiliger Dateien in Golang implementiert wird: 🎜🎜🎜HTML-Formular:🎜🎜rrreee🎜🎜Go-Code:🎜🎜rrreee🎜🎜Test-Upload🎜🎜🎜Besuchen Sie /upload Code > Formular und wählen Sie eine Datei zum Hochladen aus. Nach einem erfolgreichen Upload druckt die Konsole die Details der hochgeladenen Datei. 🎜🎜🎜Tipps🎜🎜<ul> <li>Verwenden Sie die Funktion <code>FormFile, um eine einzelne Datei abzurufen. 🎜
  • Verwenden Sie die Funktion ParseMultipartForm, um mehrere Dateien und andere Formularfelder abzurufen. 🎜
  • multipart/form-data kann auch für andere Arten von Datei-Uploads verwendet werden, wie zum Beispiel Bilder und Videos. 🎜🎜
  • Das obige ist der detaillierte Inhalt vonWie gehe ich mit dem Hochladen mehrteiliger Dateien in Golang um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Goroutines verstehen: Ein tiefes Eintauchen in die Parallelität von GoGoroutines verstehen: Ein tiefes Eintauchen in die Parallelität von GoMay 01, 2025 am 12:18 AM

    GoroutinesareFunctionsOrtheThatrunConcruncurentoingo, aktivieren, dass und leuchtet die Wutzehnung

    Verständnis der Init -Funktion in Go: Zweck und VerwendungVerständnis der Init -Funktion in Go: Zweck und VerwendungMay 01, 2025 am 12:16 AM

    ThepurpleTheinitfunctioningoinitializeVariables, Setupconfigurationen, orperformN -nötiger SetupBeforeThemaNFunctionexecutes

    Verständnis GO -Schnittstellen: Ein umfassender LeitfadenVerständnis GO -Schnittstellen: Ein umfassender LeitfadenMay 01, 2025 am 12:13 AM

    GointerfacesAremethodSignaturesSetShattypesMustImplement, EnablingPolymorphism mit der Outinheritanceforcleaner, modularCode.

    Erholung von Panik in Go: Wann und wie man recover () verwendet ()Erholung von Panik in Go: Wann und wie man recover () verwendet ()May 01, 2025 am 12:04 AM

    Verwenden Sie die Funktion resocal (), um sich von Panik zu erholen. Die spezifischen Methoden sind: 1) Verwenden Sie Recover (), um Panik in der Aufschubfunktion zu erfassen, um Programmabstürze zu vermeiden. 2) detaillierte Fehlerinformationen zum Debuggen aufzeichnen; 3) entscheiden, ob die Programmausführung auf der Grundlage der spezifischen Situation wieder aufgenommen werden soll; 4) Verwenden Sie mit Vorsicht, um die Leistung zu vermeiden.

    Wie benutzt man die 'Strings' & quot; Paket, um Saiten in Go zu manipulieren?Wie benutzt man die 'Strings' & quot; Paket, um Saiten in Go zu manipulieren?Apr 30, 2025 pm 02:34 PM

    In dem Artikel werden mit dem "Strings" -Paket von Go für String -Manipulationen untersucht, in denen gemeinsame Funktionen und Best Practices beschrieben werden, um die Effizienz zu verbessern und Unicode effektiv zu verarbeiten.

    Wie benutzt man den 'Crypto' & quot; Paket zur Durchführung kryptografischer Operationen in Go?Wie benutzt man den 'Crypto' & quot; Paket zur Durchführung kryptografischer Operationen in Go?Apr 30, 2025 pm 02:33 PM

    Die Artikeldetails mit dem "Crypto" -Paket von GO für kryptografische Operationen, Erörterung der wichtigsten Generation, des Managements und der Best Practices für die sichere Implementierung.Character Count: 159

    Wie benutzt man die 'Zeit' ' Paket zum Umgang mit Daten und Zeiten in Go?Wie benutzt man die 'Zeit' ' Paket zum Umgang mit Daten und Zeiten in Go?Apr 30, 2025 pm 02:32 PM

    Der Artikel beschreibt die Verwendung von GO's "Time" -Paket zum Umgang mit Daten, Zeiten und Zeitzonen, einschließlich der aktuellen Zeit, der Erstellung bestimmter Zeiten, der Parsen von Zeichenfolgen und der Messung der verstrichenen Zeit.

    Wie benutzt man den 'Reflect' & quot; Paket, um den Typ und den Wert einer Variablen in Go zu überprüfen?Wie benutzt man den 'Reflect' & quot; Paket, um den Typ und den Wert einer Variablen in Go zu überprüfen?Apr 30, 2025 pm 02:29 PM

    In Artikel wird das "Reflect" -Paket von GO zur variablen Inspektion und Änderung mithilfe von Methoden und Leistungsüberlegungen erläutert.

    See all articles

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    Video Face Swap

    Video Face Swap

    Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

    Heiße Werkzeuge

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    MantisBT

    MantisBT

    Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

    mPDF

    mPDF

    mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

    WebStorm-Mac-Version

    WebStorm-Mac-Version

    Nützliche JavaScript-Entwicklungstools

    VSCode Windows 64-Bit-Download

    VSCode Windows 64-Bit-Download

    Ein kostenloser und leistungsstarker IDE-Editor von Microsoft