网络编程
位置:首页>> 网络编程>> Go语言>> 用go gin server来做文件上传服务

用go gin server来做文件上传服务

作者:stpeace  发布时间:2024-05-29 22:09:12 

标签:go,gin,server,文件上传,服务

之前已经go get安装了gin, 现在来玩下用go gin server作图片上传服务, 代码目录如下:


taoge:~/test_gin$ tree
.
|-- public
|-- template
|  `-- select_file.html
`-- test_gin_server.go
2 directories, 2 files
taoge:~/test_gin$

test_gin_server.go内容:


package main
import (
 "fmt"
 "io"
 "log"
 "net/http"
 "os"
 "github.com/gin-gonic/gin"
)
func upload(c *gin.Context) {
 file, header, err := c.Request.FormFile("file")
 if err != nil {
   c.String(http.StatusBadRequest, fmt.Sprintf("file err : %s", err.Error()))
   return
 }
 filename := header.Filename
 out, err := os.Create("public/" + filename)
 if err != nil {
   log.Fatal(err)
 }
 defer out.Close()
 _, err = io.Copy(out, file)
 if err != nil {
   log.Fatal(err)
 }
 filepath := "http://localhost:8080/file/" + filename
 c.JSON(http.StatusOK, gin.H{"filepath": filepath})
}
func main() {
 router := gin.Default()
 router.LoadHTMLGlob("template/*")
 router.GET("/", func(c *gin.Context) {
   c.HTML(http.StatusOK, "select_file.html", gin.H{})
 })
 router.POST("/upload", upload)
 router.StaticFS("/file", http.Dir("public"))
 router.Run(":8080")
}

select_file.html的内容为:


<html>
<body>
 <form action="http://localhost:8080/upload/" enctype="multipart/form-data" method="POST">
   <input type="file" name="file" id="pic" accept="*" />
   <button type="submit">提交</button>
 </form>
</body>
</html>

go run test_gin_server.go跑起来, 在浏览器上执行:http://localhost:8080/ ,然后就出现了图片上传的页面,于是就可以上传图片了, 玩了一下, OK,服务端对应的public目录中有对应的图片。

不多说。

来源:https://blog.csdn.net/stpeace/article/details/82721770

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com