golangWeb框架---github.com/gin-gonic/gin学习二(文件上传、多文件上传)

文章目录
上传单个文件(一)
上传单个文件(二)
上传多个文件

关于如何实现Gin框架上传单个文件、多个文件的案例
上传单个文件(一)
package main

import (
"github.com/gin-gonic/gin"
"io"
"log"
"net/http"
"os"
)


func main() {
router := gin.Default()

router.POST("/upload", getting)
router.Run()
}

func getting(c *gin.Context){
file, handler, err := c.Request.FormFile("file")
filename := handler.Filename
log.Println("Received file:", handler.Filename)
out, err := os.Create(filename)
if err != nil {
log.Fatal(err)
}
defer out.Close()
_, err = io.Copy(out, file)
if err != nil {
log.Fatal(err)
}
c.String(http.StatusOK, "Uploaded...")
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
我们通过

$ curl -X POST http://localhost:8080/upload -F “file=@/Users/zhiliao/Desktop/23sdfsdfs_wew.png” -H “Content-Type: multipart/form-data”

如下命令就可以实现文件的上传(图片目录是我本机上的一张图片)

效果图如下:


上传单个文件(二)
我们还可以利用如下的方法

package main

import (
"github.com/gin-gonic/gin"
"log"
"net/http"
)

func main() {
router := gin.Default()

router.POST("/upload", getting)
router.Run()
}


func getting(c *gin.Context){
file, _ := c.FormFile("file")
log.Println(file.Filename)
//这里省略了其他操作
// Upload the file to specific dst.
// c.SaveUploadedFile(file, dst)
c.String(http.StatusOK, "Uploaded...")
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
同样执行上述的CURL命令,后台即可成功收到成功日志输出,但是代码里面我只是列出了文件名字,对应文件的输出操作就暂时省去了,后续专门开一篇来介绍文件操作的方方面面


最后看生成的文件


上传多个文件
我们还可以实现批量文件上传

package main

import (
"github.com/gin-gonic/gin"
"log"
"net/http"
)

func main() {
router := gin.Default()

router.POST("/upload", getting)
router.Run()
}

func getting(c *gin.Context){

form, _ := c.MultipartForm()
files := form.File["upload[]"]

for _, file := range files {
log.Println(file.Filename)
c.SaveUploadedFile(file,file.Filename)
}
c.String(http.StatusOK, "Uploaded...")


}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
然后我们执行如下操作
curl -X POST http://localhost:8080/upload -F “upload[]=@/Users/zhiliao/Desktop/23sdfsdfs_wew.png” -F “upload[]=@/Users/zhiliao/Desktop/WX20180903-103357.png” -H “Content-Type: multipart/form-data”

就可以看到log日志输出


最后看下图片生成的目录

猜你喜欢

转载自www.cnblogs.com/ExMan/p/12960823.html