最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang?Gin上傳文件返回前端及中間件實(shí)現(xiàn)示例

 更新時(shí)間:2022年04月15日 12:44:10   作者:Jeff的技術(shù)棧  
這篇文章主要為大家介紹了golang?Gin上傳文件返回前端及中間件實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪

上傳文件

package main
import (
	"fmt"
	"github.com/gin-gonic/gin"
)
func main() {
	router := gin.Default()
	// 給表單限制上傳大小 (默認(rèn) 32 MiB)
	// router.MaxMultipartMemory = 8 << 20  // 8 MiB
	router.POST("/upload", func(c *gin.Context) {
		// 單文件
		file, _ := c.FormFile("file")
		// 上傳文件到指定的路徑
		c.SaveUploadedFile(file, "./"+file.Filename)

		//c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename))
		c.Writer.Header().Add("Content-Disposition",fmt.Sprintf("attachment;filename=%s",file.Filename))
		c.File("./"+file.Filename)
	})
	router.Run(":8080")
}

文件返回給前端

c.Writer.Header().Add("Content-Disposition",fmt.Sprintf("attachment;filename=%s",file.Filename))
c.File("./"+file.Filename)  //返回文件路徑,自動(dòng)調(diào)用http.ServeFile方法

中間件

中間件調(diào)用兩種方式

方式一:在Use中連續(xù)調(diào)用

v1 := r.Group("v1").Use(middel())
v1 := r.Group("v1").Use(middel(),middel2())

方式二:Use鏈?zhǔn)秸{(diào)用

v1 := r.Group("v1").Use(middel()).Use(middel2())

單個(gè)中間件

package main
import (
	"fmt"
	"github.com/gin-gonic/gin"
)
func middel()gin.HandlerFunc{
	return func(context *gin.Context) {
		fmt.Println("我在方法前1")
		context.Next()
		fmt.Println("我在方法后1")
	}
}
func main() {
	r := gin.Default()
	v1 := r.Group("v1").Use(middel())
	v1.GET("/test", func(c *gin.Context) {
		fmt.Println("我在方法內(nèi)部")
		c.JSON(200, gin.H{
			"msg": true,
		})
	})
	r.Run(":8080")
}

結(jié)果 

我在方法前1
我在方法內(nèi)部
我在方法后1

多個(gè)中間件

package main
import (
	"fmt"
	"github.com/gin-gonic/gin"
)
func middel()gin.HandlerFunc{
	return func(context *gin.Context) {
		fmt.Println("我在方法前1")
		context.Next()
		fmt.Println("我在方法后1")
	}
}
func middel2()gin.HandlerFunc{
	return func(context *gin.Context) {
		fmt.Println("我在方法前2")
		context.Next()
		fmt.Println("我在方法后2")
	}
}
func main() {
	r := gin.Default()
	v1 := r.Group("v1").Use(middel(),middel2())
	v1.GET("/test", func(c *gin.Context) {
		fmt.Println("我在方法內(nèi)部")
		c.JSON(200, gin.H{
			"msg": true,
		})
	})
	r.Run(":8080")
}
//像一個(gè)洋蔥

結(jié)果

我在方法前1
我在方法前2
我在方法內(nèi)部
我在方法后2
我在方法后1

以上就是golang Gin上傳文件返回前端及中間件實(shí)現(xiàn)示例的詳細(xì)內(nèi)容,更多關(guān)于golang Gin上傳文件返回前端中間件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go語(yǔ)言的反射reflect使用大全

    Go語(yǔ)言的反射reflect使用大全

    Go語(yǔ)言中reflect包提供了運(yùn)行時(shí)反射的功能,本文主要介紹了Go語(yǔ)言的反射reflect使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • go語(yǔ)言規(guī)范RESTful?API業(yè)務(wù)錯(cuò)誤處理

    go語(yǔ)言規(guī)范RESTful?API業(yè)務(wù)錯(cuò)誤處理

    這篇文章主要為大家介紹了go語(yǔ)言規(guī)范RESTful?API業(yè)務(wù)錯(cuò)誤處理方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Go語(yǔ)言題解LeetCode599兩個(gè)列表的最小索引總和

    Go語(yǔ)言題解LeetCode599兩個(gè)列表的最小索引總和

    這篇文章主要為大家介紹了Go語(yǔ)言題解LeetCode599兩個(gè)列表的最小索引總和示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 使用Go語(yǔ)言進(jìn)行條件編譯的示例代碼

    使用Go語(yǔ)言進(jìn)行條件編譯的示例代碼

    Go的條件編譯主要通過(guò)構(gòu)建標(biāo)簽(build?tags)和構(gòu)建約束(build?constraints)來(lái)實(shí)現(xiàn),這些標(biāo)簽和約束可以讓我們針對(duì)不同的操作系統(tǒng)、架構(gòu)或特定條件編寫特定代碼,本文給大家介紹了如何使用Go語(yǔ)言進(jìn)行條件編譯,需要的朋友可以參考下
    2024-06-06
  • goland?-sync/atomic原子操作小結(jié)

    goland?-sync/atomic原子操作小結(jié)

    這篇文章主要介紹了goland?-sync/atomic原子操作,原子操作能夠保證執(zhí)行期間是連續(xù)且不會(huì)被中斷(變量不會(huì)被其他修改,mutex可能存在被其他修改的情況),本文給大家介紹的非常詳細(xì),需要的朋友參考下
    2022-08-08
  • golang實(shí)現(xiàn)瀏覽器導(dǎo)出excel文件功能

    golang實(shí)現(xiàn)瀏覽器導(dǎo)出excel文件功能

    這篇文章主要介紹了golang實(shí)現(xiàn)瀏覽器導(dǎo)出excel文件功能,文章通過(guò)golang導(dǎo)出excel文件返回給web,實(shí)現(xiàn)瀏覽器導(dǎo)出excel文件功能,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • 使用?gomonkey?Mock?函數(shù)及方法示例詳解

    使用?gomonkey?Mock?函數(shù)及方法示例詳解

    在 Golang 語(yǔ)言中,寫單元測(cè)試的時(shí)候,不可避免的會(huì)涉及到對(duì)其他函數(shù)及方法的 Mock,即在假設(shè)其他函數(shù)及方法響應(yīng)預(yù)期結(jié)果的同時(shí),校驗(yàn)被測(cè)函數(shù)的響應(yīng)是否符合預(yù)期,這篇文章主要介紹了使用?gomonkey?Mock?函數(shù)及方法,需要的朋友可以參考下
    2022-06-06
  • Golang中interface轉(zhuǎn)string輸出打印方法

    Golang中interface轉(zhuǎn)string輸出打印方法

    這篇文章主要給大家介紹了關(guān)于Golang中interface轉(zhuǎn)string輸出打印的相關(guān)資料,在go語(yǔ)言中interface轉(zhuǎn)string可以直接使用fmt提供的fmt函數(shù),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • 詳解go程序如何在windows服務(wù)中開(kāi)啟和關(guān)閉

    詳解go程序如何在windows服務(wù)中開(kāi)啟和關(guān)閉

    這篇文章主要介紹了一個(gè)go程序,如何在windows服務(wù)中優(yōu)雅開(kāi)啟和關(guān)閉,文中通過(guò)代碼示例和圖文講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-07-07
  • go語(yǔ)言實(shí)現(xiàn)兩個(gè)協(xié)程交替打印

    go語(yǔ)言實(shí)現(xiàn)兩個(gè)協(xié)程交替打印

    這篇文章主要介紹了go語(yǔ)言實(shí)現(xiàn)兩個(gè)協(xié)程交替打印,文章主要分享了兩種方法使用兩個(gè)channel和使用一個(gè)channel,內(nèi)容介紹詳細(xì)具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03

最新評(píng)論

健康| 蒙阴县| 阳城县| 称多县| 泸西县| 清涧县| 柞水县| 新乡市| 郓城县| 广汉市| 高碑店市| 普定县| 河间市| 岳西县| 唐河县| 湖南省| 南阳市| 石城县| 厦门市| 克山县| 黔西| 苍溪县| 公主岭市| 乌拉特前旗| 汤原县| 仪陇县| 外汇| 宁夏| 图木舒克市| 香河县| 襄城县| 涟源市| 西乡县| 津南区| 阿拉善盟| 涪陵区| 尉犁县| 乌拉特中旗| 竹溪县| 荥阳市| 辽源市|