文件上传下载
1. 文件上传
使用 r.ParseMultipartForm 解析上传的文件:
func uploadHandler(w http.ResponseWriter, r *http.Request) {
err := r.ParseMultipartForm(10 << 20) // 限制最大上传大小10MB
if err != nil {
http.Error(w, "File too big", http.StatusBadRequest)
return
}
file, handler, err := r.FormFile("uploadFile")
if err != nil {
http.Error(w, "Error retrieving the file", http.StatusBadRequest)
return
}
defer file.Close()
dst, err := os.Create("./uploads/" + handler.Filename)
if err != nil {
http.Error(w, "Unable to save the file", http.StatusInternalServerError)
return
}
defer dst.Close()
io.Copy(dst, file)
fmt.Fprintf(w, "File uploaded successfully: %s\n", handler.Filename)
}
`
2. 文件下载
设置响应头实现文件下载:
func downloadHandler(w http.ResponseWriter, r *http.Request) {
filename := "example.txt"
w.Header().Set("Content-Disposition", "attachment; filename="+filename)
w.Header().Set("Content-Type", "application/octet-stream")
http.ServeFile(w, r, "./files/"+filename)
}
文件上传和下载是 Web 应用中常见的功能,需注意安全和性能。
相关内容
- 什么是 Go Go 是由 Google 开发的一种开源编程语言,以简洁、高效、并发编程支持强著称,广泛应用于后端开发、云原生和微服务等领域。
- Go 的特点与适用场景 Go 语言以高并发、快速编译、简洁语法和强大标准库著称,适用于构建高性能网络服务、微服务架构和云原生应用。
- 安装 Go(Windows/Linux/macOS) 本节介绍如何在 Windows、Linux 和 macOS 上安装 Go 语言开发环境,包含安装步骤、验证方法及常见注意事项。
- 设置环境变量 本节介绍如何为 Go 语言配置环境变量,包括 GOPATH、GOROOT、PATH 等关键变量,适用于 Windows、Linux 和 macOS 系统。
- 第一个 Go 程序(Hello World) 本节将带你编写第一个 Go 程序“Hello, World”,帮助你快速了解 Go 的基础语法和程序结构。
- Go Modules 简介 本节介绍 Go Modules 的基本概念与用法,它是 Go 官方推荐的依赖管理方式,支持版本控制、依赖隔离和构建一致性。