Golang Gin 框架上传四
目录
前言
利用 Gin 框架,我们可以非常简单的实现上传服务接口的开发,今天我们就来看看 Gin 在这方面都支持哪些能力,能够为我们减少多少任务量。
正文
当设计开发一个存储服务的时候,首先就要想到如何实现上传存储功能,Gin 框架能够非常简单的支持单文件上传和多文件同时上传,接下来通过实例分别介绍这两方面的内容。
单文件上传
首先,我们来看 Gin 框架如何实现单文件上传,一般上传文件格式会被定义成 multipart forms 类型,并且保存在 file 字段中。在服务器端处理上传数据时,可以通过 FormFile() 方法来解析 file 参数。具体编码请看下面的代码实例:
package main
import "github.com/gin-gonic/gin"
func main() {
router := gin.Default()
// 为 multipart forms 类型设置一个较低的内存缓存 (默认是 32 MiB)
router.MaxMultipartMemory = 8 << 20 // 8 MiB
router.POST("/upload", func(c *gin.Context) {
// 单文件
file, _ := c.FormFile("file")
log.Println(file.Filename)
// 保存上传文件到目标目录
dst := "/Users/lz/go/src/bag/bin/test/dst/dst.jpg"
c.SaveUploadedFile(file, dst)
c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename))
})
router.Run(":8080")
}
当我们在服务端使用 FormFile() 方法解析 file 字段时,返回的 file 对象是一个 multipart.FileHeader 指针类型,其中包含了源文件数据的地址,然后使用 SaveUploadedFile() 方法保存 file 对象,参数 dst 是目标文件地址。
代码非常简单,接下来让我测试一下服务是否好用,我们 curl 工具模拟上传行为,具体命令如下:
curl -X POST http://localhost:8080/upload \
-F "file=@/Users/lz/go/src/bag/bin/test/src/cover.jpg" \
-H "Content-Type: multipart/form-data"
结果:在目标目录中找到了上传的 cover.jpg 文件,如下图所示:
多文件上传
Gin 框架不仅可以非常简单的支持单文件上传,还可以支持多文件同时上传,上传文件格式也会被定义成 multipart forms 类型,并且保存在 upload[]
字段中。在服务器端处理上传数据时,可以通过 File() 方法来解析 upload[]
参数。具体编码请看下面的代码实例:
func main() {
router := gin.Default()
// 限定 multipart forms 内容占用大小
router.MaxMultipartMemory = 8 << 20 // 8 MiB
router.POST("/upload", func(c *gin.Context) {
// 多个 form 类型文件
form, _ := c.MultipartForm()
files := form.File["upload[]"]
for _, file := range files {
log.Println(file.Filename)
// 保存到指定文件
dst := "/Users/lz/go/src/bag/bin/test/dst/" file.Filename
c.SaveUploadedFile(file, dst)
}
c.String(http.StatusOK, fmt.Sprintf("%d files uploaded!", len(files)))
})
router.Run(":8080")
}
原理上类似,只是在服务器端对同时上传到多个文件分别进行了保存而已。
下面让我们同时上传两个文件测试一下服务是否好用,具体命令如下:
curl -X POST http://localhost:8080/upload \
-F "upload[]=@/Users/lz/go/src/bag/bin/test/src/cover.jpg" \
-F "upload[]=@/Users/lz/go/src/bag/bin/test/src/cover2.jpg" \
-H "Content-Type: multipart/form-data"
结果也是正确的。
结尾
通过文本的介绍,我们可以了解到 Gin 框架能够非常简单的支持单文件上传和多文件同时上传。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhbebjci
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01