您的位置 首页 golang

Go Web 框架 Gin 上传单个文件的步骤

Go Web 框架 Gin 上传单个文件的步骤

1、首先定义2个路由,分别是GET的“/”和POST的“/”

GET的“/”:用于展示上传页面

POST的“/”:用于处理上传的文件

 app.GET("/", index)
app.POST("/", indexPost)  

2、展示页面

 func index(c *gin.Context) {
   c.HTML(http.StatusOK, "index. HTML ",  nil )
}  

这个是展示的页面HTML

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta  charset ="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/asset/css/bootstrap.css">
    < script  src="/asset/js/%20jquery -3.6.0.js"></script>
    <script src="/asset/js/bootstrap.js"></script>
</head>
<body class="container" style=" margin -top: 30px">
<form action="/" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <p><input class="form-control- File " type="file" name="file"></p>
    </div>
    <div class="form-group">
        <p><input class="form-control" type="submit"></p>
    </div>
</form>
</body>
</html>  

enctype=”multipart/form-data”:上传文件的时候,这个属性一定要写正确

input 标签中,名字写成 file ,类型一定要写成file

3、处理上传的文件

 func indexPost(c *gin.Context) {
   file, err := c.FormFile("file")
   if err != nil {
      return
   }
   newFile := fmt.Sprintf(
      "upload/%s%s%s",
      time.Now().Format("2006-01-02-15-04-05"),
      "-",
      file.Filename,
   )
   fmt.Println(newFile)
   err = c.SaveUploadedFile(file, newFile)
   if err != nil {
      _, _ = c.Writer.Write([] byte (err.Error()))
   }
   _, _ = c.Writer.Write([]byte("上传成功"))
}  

newFile的作用是,在upload文件夹下,文件名为当前 时间 字符串 +“-”+文件名 的拼接,放置文件名冲突

(1)c.FormFile(“file”)的作用是获取到”file”的*multipart.FileHeader,其中”file”为表单HTML的name属性名

(2)c.SaveUploadedFile(file, newFile)的作用是保存上传的文件,有2个参数,第1个参数是根据c.FormFile(“file”)的作用是获取到”file”的*multipart.FileHeader,第2个参数是保存的路径

应用源码

模板源码

执行结果

文章来源:智云一二三科技

文章标题:Go Web 框架 Gin 上传单个文件的步骤

文章地址:https://www.zhihuclub.com/99171.shtml

关于作者: 智云科技

热门文章

网站地图