Home  >  Article  >  Backend Development  >  How to handle multipart file upload in Golang?

How to handle multipart file upload in Golang?

WBOY
WBOYOriginal
2024-06-03 15:49:00228browse

Handling multipart file uploads in Golang involves: dividing the request into multiple parts using the multipart/form-data content type. Use the FormFile and ParseMultipartForm functions to parse the request. Get the uploaded file and process it. Practical case: Adding a file input field to an HTML form. Use Go code to import the Echo framework and spew library and define a file upload handler. Parse the request form and get the file. Print file details. Run the server and test the upload functionality.

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

Handling multi-part file uploads in Golang

Introduction

Multi-part File upload is a technique that breaks files into smaller chunks and transfers them in HTTP requests. It is typically used for uploading large files or uploading in chunks. This article will guide you in handling multi-part file uploads in Golang and provide a simple practical case.

Multipart/Form-Data

Multipart file uploads use the multipart/form-data content type, which divides the request into multiple parts . Each section has its title, content type, and a form field that points to the actual file content.

Parse Request

To parse multipart requests in Golang, you can use the FormFile and ParseMultipartForm functions:

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
}

Practical Case

The following is a simple practical case showing how to implement multi-part file upload in Golang:

HTML Form :

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

Go code:

// 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",
    })
}

Test upload

Visit/upload form and select a file to upload. After a successful upload, the console will print the details of the uploaded file.

Tip

  • Use the FormFile function to obtain a single file.
  • Use the ParseMultipartForm function to obtain multiple files and other form fields.
  • multipart/form-data can also be used for other types of file uploads, such as images and videos.

The above is the detailed content of How to handle multipart file upload in Golang?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn