GoWeb-Gin 文件上載


前些日子,我們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"
)
三.今天的主角,DEMO:upload file
//gin.go

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去吧!

哈哈哈哈哈哈

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM