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.
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
FormFile
function to obtain a single file. 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!