前些日子,我们Node.JS了一把。
如今,我们还是回到我们伟大的GO来吧
今天,带领大家继续Golang的啦,而且是个上传文件的例子
先给大家看结果
1. 如果是windows端,你需要安装postman,这个是谷歌浏览器的插件,模拟HTTP客户端。我下载的可以独立使用
记得form表单的key域类型要选择‘文件’,这里是个坑,我搞了不少时间,一直奇怪,为何Linux客户端可以上载,但是windodws客户端就是不行。后了,才发现是这个问题。
Linux终端下,你输入客户端命令就行:
curl -X POST http://localhost:8080/upload -F "file=@./test.txt" -H "Content-Type:multipart/form-data"
记得在windows下也好,linux下也吧,test.txt,10.1.docx那是我要上传的文件,请替换成你们自己的文件
//
gonic-gin:一个好用的web框架
一.下载安装
直接用go的get命令就可以了,ZTND简单,哈哈哈
go get github.com
/gin-gonic/gin
二.go工程里使用
import进"github.com/gin-gonic/gin"就行了,简单的不要不要的。。。
import (
"github.com/gin-gonic/gin"
)
package main
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
// Set a lower memory limit for multipart forms (default is 32 MiB)
router.MaxMultipartMemory = 8 << 20 // 8 MiB
router.Static("/", "./public")
router.POST("/upload", func(c *gin.Context) {
// Source
file, err := c.FormFile("file")
if err != nil {
c.String(http.StatusBadRequest, fmt.Sprintf("get form err: %s", err.Error()))
return
}
if err := c.SaveUploadedFile(file, file.Filename); err != nil {
c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error()))
return
}
c.String(http.StatusOK, fmt.Sprintf("File %s uploaded successfully
", file.Filename))
})
router.Run(":8080")
}
//编译运行
go build gin.go
./gin
//结果
哈哈,在本文最上边呢!
ls(服务器上看看,果然 10.1.docx和test.txt都上载过来了)
10.1.docx gin-1 gin-1.go main.go test.txt
FInally:
不可思议吧,这么简单就能实现文件上传!但这就是框架的力量啊,让我们向框架的开发者致敬
稍微解释下上边那段代码:
1. go工程里应用gin框架,这个前面说过了
2.默认设置启动路由
3.设置路由内存上限
4.设置静态文件目录:当前目录和public目录(默认)
5.匿名函数响应客户端post请求,action为/upload
6.fetch请求的上载文件结构
7.SaveUploadedFile同名文件,也即执行上载过程
8.服务在8080端口监听客户端连接
好了,也很详细了,其它的咱们来日方长,慢慢研究。
你喜欢GO了吗?那你就GO去吧!
哈哈哈哈哈哈