社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
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...")
}
我们通过
$ 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...")
}
同样执行上述的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...")
}
然后我们执行如下操作
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日志输出
最后看下图片生成的目录
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!