Heim > Backend-Entwicklung > Golang > Wie kann ich Datei-Uploads in Golang mit net/http und Mux ordnungsgemäß empfangen?

Wie kann ich Datei-Uploads in Golang mit net/http und Mux ordnungsgemäß empfangen?

Linda Hamilton
Freigeben: 2024-12-10 20:57:11
Original
894 Leute haben es durchsucht

How to Properly Receive File Uploads in Golang using net/http and Mux?

Empfangen von Datei-Uploads mit Golangs Netz/http und Mux

In der Welt der Webentwicklung ist das Empfangen von Datei-Uploads eine häufige Aufgabe. Das Net/http-Paket von Golang bietet einen praktischen Rahmen für die Bearbeitung solcher Anfragen, insbesondere in Kombination mit dem leistungsstarken Mux-Router.

Identifizierung des Problems

Ihr Code scheint korrekt zu verarbeiten Der Upload wird zwar nicht durchgeführt, der tatsächliche Dateiinhalt kann jedoch nicht abgerufen werden. Der Übeltäter liegt in der UploadFile-Funktion, insbesondere darin, wie Sie den Anforderungstext abrufen.

Lösung

Um hochgeladene Dateien effektiv zu empfangen, befolgen Sie diese Schritte:

  1. Parsen Sie den Multipart Formular:

    r.ParseMultipartForm(5 * 1024 * 1024) // Sets a limit for the size of the form
    Nach dem Login kopieren
  2. Auf die Datei zugreifen:

    file, header, err := r.FormFile("fileupload")
    Nach dem Login kopieren
  3. Kopieren Sie die Dateiinhalte zu a Puffer:

    var buf bytes.Buffer
    io.Copy(&buf, file)
    Nach dem Login kopieren
  4. Dateiinhalte als Zeichenfolge abrufen:

    contents := buf.String()
    Nach dem Login kopieren

Beispielcode

Hier ist eine modifizierte Version Ihrer UploadFile Funktion:

func UploadFile(w http.ResponseWriter, r *http.Request) {
    r.ParseMultipartForm(5 * 1024 * 1024)
    var buf bytes.Buffer

    file, header, err := r.FormFile("fileupload")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    fmt.Printf("File name %s\n", header.Filename)
    io.Copy(&buf, file)
    fmt.Println(buf.String())
}
Nach dem Login kopieren

Zusätzliche Überlegungen

  • Begrenzen Sie die Größe der Datei-Uploads mit ParseMultipartForm(size int64).
  • Verwenden Sie a temporärer Puffer zum Speichern des Dateiinhalts, um den Speicherverbrauch unter Kontrolle zu halten.
  • Schließlich kümmern Sie sich um die den Inhalt der Datei entsprechend anpassen, z. B. auf der Festplatte speichern oder im Speicher verarbeiten.

Das obige ist der detaillierte Inhalt vonWie kann ich Datei-Uploads in Golang mit net/http und Mux ordnungsgemäß empfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage