gin框架实现文件上传下载
时间: 2023-01-11 07:55:36 浏览: 186
好的,下面是 gin 框架实现文件上传和下载的方法。
文件上传:
1. 使用 gin.MaxMultipartMemory 设置最大内存大小(例如:1<<20 表示 1 MB)
2. 在表单中添加文件字段
3. 使用 c.SaveUploadedFile() 将文件保存到本地
例如:
```
router.POST("/upload", func(c *gin.Context) {
// 设置最大内存
c.Request.Body = http.MaxBytesReader(c.Writer, c.Request.Body, 1<<20)
// 解析表单
err := c.Request.ParseMultipartForm(1 << 20)
if err != nil {
c.String(http.StatusBadRequest, fmt.Sprintf("内存超过最大限制: %s", err))
return
}
// 获取文件
file, _, err := c.Request.FormFile("file")
if err != nil {
c.String(http.StatusBadRequest, fmt.Sprintf("获取文件失败: %s", err))
return
}
defer file.Close()
// 创建保存文件的路径
filename := fmt.Sprintf("%d-%s", time.Now().Unix(), "uploaded-file")
out, err := os.Create(filename)
if err != nil {
c.String(http.StatusInternalServerError, fmt.Sprintf("创建文件失败: %s", err))
return
}
defer out.Close()
// 将文件内容拷贝到保存文件的路径
_, err = io.Copy(out, file)
if err != nil {
c.String(http.StatusInternalServerError, fmt.Sprintf("保存文件失败: %s", err))
return
}
c.String(http.StatusOK, "文件上传成功")
})
```
文件下载:
1. 使用 c.Header().Set() 设置响应头,其中 "Content-Disposition" 表示文件名,"attachment" 表示以附件的形式下载
2. 使
阅读全文