前些日子,我們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\n", 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去吧!
哈哈哈哈哈哈