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日志输出
最后看下图片生成的目录
相关文章
- 在pycharm中如何新建Python文件?_github下载的python源码项目怎么用
- 添加Github徽标
- 阿里秀MySQL高端玩法,300页亿级MySQL调优文档GitHub开源即巅峰
- 知乎最具争议的Java面试成神笔记,GitHub已下载量已过百万
- GIT推送文件至Github – 学金融的文史哲小生
- 提高警惕!黑客在GitHub上利用虚假 PoC 漏洞钓鱼
- 利用Github action续期Micosoft 365
- 2023-02-28:moonfdd/ffmpeg-go是用go语言绑定ffmpeg的库,目前是github上最好用的库。请用go语言将yuv文件编码为h264
- 不会PS也没关系!一键生成精美的GitHub推广图!!
- 无需服务器的GitHub实时漏洞利用工具监听器,目前支持微信/TG推送,中文版 Github-CVE-Listener
- 用 iPad 来写代码,GitHub 又一代码编辑器,开源了!
- 利用CloudFlare的Workers和Pages反代Github并缓存实现Github文件加速访问
- 【错误记录】GitHub 提交代码失败、获取代码失败、连接超时、权限错误、ping 请求连接超时 ( 查找域名对应 IP | 设置 host 文件 )
- Box推出开源计划“Box Open Source”,多项内部技术通过GitHub与开发者共享
- GitHub 收购代码分析平台公司 Semmle 致力于查找零日漏洞及其变种
- 总有你要的编程书单(GitHub )
- 基于Github的源码白盒扫描工具Raptor
- GitHub 弃用了基于账户密码的 Git 操作认证