Home > Article > Backend Development > How to upload large files in chunks using Golang?
Implement multipart upload of large files in Golang: use the mime/multipart package to create a multipart upload request. Set Content-Type to multipart/form-data. Use an HTTP client to send the request. Read the server response and process the results.
How to upload large files in chunks in Golang
When uploading large files, upload the entire file directly to the server usually Various issues can be encountered, such as timeouts, out of memory, and network outages. Therefore, chunked upload is a more efficient and reliable solution.
In Golang, you can use the [mime/multipart
](https://pkg.go.dev/mime/multipart) package to easily upload files in chunks. This package provides the [Writer
](https://pkg.go.dev/mime/multipart#Writer) type, allowing us to create multipart upload requests:
package main import ( "bytes" "fmt" "io" "io/ioutil" "mime/multipart" "net/http" "os" ) func main() { // 将文件内容读入内存 fileBytes, err := ioutil.ReadFile("large-file.txt") if err != nil { fmt.Println("Error reading file: ", err) return } // 创建分块上传请求 req, err := http.NewRequest("POST", "http://example.com/upload", bytes.NewReader(fileBytes)) if err != nil { fmt.Println("Error creating request: ", err) return } // 设置分块上传 Content-Type req.Header.Set("Content-Type", multipart.NewWriter().FormDataContentType()) client := &http.Client{} res, err := client.Do(req) if err != nil { fmt.Println("Error uploading file: ", err) return } if res.StatusCode != http.StatusOK { fmt.Println("Error uploading file: ", res.Status) return } // 读取服务器响应 bodyBytes, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println("Error reading response: ", err) return } fmt.Println("File uploaded successfully:", string(bodyBytes)) }
Practical case:
Suppose we have a large file named large-file.txt
that needs to be uploaded to the /upload
path on the server. We can run the following Golang program to upload:
go run main.go
This program will upload the large-file.txt
file in chunks and print the server response.
The above is the detailed content of How to upload large files in chunks using Golang?. For more information, please follow other related articles on the PHP Chinese website!