如何使用 Golang 进行大型文件分块上传?
作者:吹吹风会发光
时间:2025-06-15
浏览:4
在Golang中实现大型文件分块上传:使用mime/multipart包创建分块上传请求。设置Content-Type为multipart/form-data。使用HTTP客户端发送请求。读取服务器响应并处理结果。
本文目录
在 Golang 中实现大型文件分块上传:使用 mime/multipart 包创建分块上传请求。设置 Content-Type 为 multipart/form-data。使用 HTTP 客户端发送请求。读取服务器响应并处理结果。

如何在 Golang 中进行大型文件分块上传
大型文件上传时,直接将整个文件上传到服务器通常会遇到各种问题,例如超时、内存不足和网络中断。因此,分块上传是一种更为有效且可靠的解决方案。
在 Golang 中,可以使用 [mime/multipart](https://pkg.go.dev/mime/multipart) 包轻松实现文件的分块上传。该包提供了 [Writer](https://pkg.go.dev/mime/multipart#Writer) 类型,允许我们创建分块上传请求:
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))
}实战案例:
假设我们有一个名为 large-file.txt 的大文件,需要上传到服务器上的 /upload 路径。我们可以运行以下 Golang 程序进行上传:
go run main.go
该程序将以分块的形式上传 large-file.txt 文件,并打印服务器响应。
作者最新文章
Agent Space智能体如何进行功能测试
2026-11-01 08:45
Proxifier怎么卸载:Windows标准版彻底移除与配置清理指南
2026-10-30 09:37
七彩虹 iGame RTX 5070 Ti Ultra SFF 显卡图赏:嘻哈涂鸦风,设计更潮酷
2026-10-26 16:48
viso如何导入word的详细操作步骤教程
2026-10-20 16:03
蛙蛙写作苹果手机更新新版本怎么下载
2026-10-15 19:40
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多

































