最新国产好看的视频,伊人天堂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ù)中開啟和關(guān)閉

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

    這篇文章主要介紹了一個(gè)go程序,如何在windows服務(wù)中優(yōu)雅開啟和關(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)論

克什克腾旗| 容城县| 新干县| 山阴县| 襄樊市| 阳泉市| 中卫市| 广东省| 长武县| 右玉县| 上饶市| 洛扎县| 岫岩| 上栗县| 邵东县| 华蓥市| 剑阁县| 黎平县| 澄城县| 庆云县| 大丰市| 东光县| 会泽县| 阳泉市| 正镶白旗| 马公市| 井研县| 鞍山市| 博罗县| 广宗县| 西峡县| 东山县| 怀远县| 阳曲县| 泰安市| 广宗县| 绥棱县| 南通市| 乌兰浩特市| 公主岭市| 固阳县|