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

golang語言實(shí)現(xiàn)的文件上傳與文件下載功能示例

 更新時(shí)間:2020年02月07日 11:38:16   作者:李瓊濤  
這篇文章主要介紹了golang語言實(shí)現(xiàn)的文件上傳與文件下載功能,結(jié)合實(shí)例形式分析了Go語言實(shí)現(xiàn)的文件傳輸相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了golang實(shí)現(xiàn)的文件上傳與文件下載功能。分享給大家供大家參考,具體如下:

upload.go

復(fù)制代碼 代碼如下:
package common
import (
 "io/ioutil"
 "os"
 "path"
 "github.com/gin-gonic/gin"
 "googo.co/goo"
 "googo.co/utils"
)
const (
 UPLOAD_DIR = "static/"
)
type Upload struct {
}
func (this Upload) DoHandle(c *gin.Context) *goo.Result {
 fh, err := c.FormFile("file")
 if err != nil {
  return goo.Err(700, "上傳失?。?+err.Error(), err.Error())
 }
 f, err := fh.Open()
 if err != nil {
  return goo.Err(701, "上傳失?。?+err.Error(), err.Error())
 }
 defer f.Close()
 bytes, err := ioutil.ReadAll(f)
 if err != nil {
  return goo.Err(702, "上傳失敗:"+err.Error(), err.Error())
 }
 md5File := utils.MD5(bytes)
 fpath := md5File[0:2] + "/" + md5File[2:4] + "/"
 if err := os.MkdirAll(UPLOAD_DIR+fpath, 0755); err != nil {
  return goo.Err(703, "上傳失?。?+err.Error(), err.Error())
 }
 fname := fpath + md5File[8:24] + path.Ext(fh.Filename)
 fw, err := os.Create(UPLOAD_DIR + fname)
 if err != nil {
  return goo.Err(704, "上傳失?。?+err.Error(), err.Error())
 }
 defer fw.Close()
 if _, err := fw.Write(bytes); err != nil {
  return goo.Err(705, "上傳失?。?+err.Error(), err.Error())
 }
 return goo.Succ(gin.H{
  "url": "/file/" + fname,
 })
}

復(fù)制代碼 代碼如下:
// 上傳文件
r.POST("/upload", goo.Handler(common.Upload{}))
// 下載文件
r.StaticFS("/file", http.Dir("./static"))
// 訪問
http://localhost:18000/file/ab/cd/efghijk.png

希望本文所述對(duì)大家Go語言程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Golang 日期/時(shí)間包的使用詳解

    Golang 日期/時(shí)間包的使用詳解

    這篇文章主要介紹了Golang 日期/時(shí)間包的使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • 淺談go 協(xié)程的使用陷阱

    淺談go 協(xié)程的使用陷阱

    這篇文章主要介紹了淺談go 協(xié)程的使用陷阱,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go?語言的?:=的具體使用

    Go?語言的?:=的具體使用

    本文主要介紹了Go?語言的?:=的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Go項(xiàng)目在linux服務(wù)器的部署詳細(xì)步驟

    Go項(xiàng)目在linux服務(wù)器的部署詳細(xì)步驟

    在今天的軟件開發(fā)中,使用Linux作為操作系統(tǒng)的比例越來越高,而Golang語言則因?yàn)槠涓咝А⒑啙嵑筒l(fā)性能等特點(diǎn),也被越來越多的開發(fā)者所青睞,這篇文章主要給大家介紹了關(guān)于Go項(xiàng)目在linux服務(wù)器的部署詳細(xì)步驟,需要的朋友可以參考下
    2023-09-09
  • Golang channle管道的基本使用及快速入門

    Golang channle管道的基本使用及快速入門

    管道是Go語言中實(shí)現(xiàn)并發(fā)的一種方式,它可以在多個(gè)goroutine之間進(jìn)行通信和數(shù)據(jù)交換,本文主要介紹了Golang channle管道的基本使用及快速入門,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Go語言之使用pprof工具查找goroutine(協(xié)程)泄漏

    Go語言之使用pprof工具查找goroutine(協(xié)程)泄漏

    這篇文章主要介紹了Go語言之使用pprof工具查找goroutine(協(xié)程)泄漏,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Golang通道的無阻塞讀寫的方法示例

    Golang通道的無阻塞讀寫的方法示例

    這篇文章主要介紹了Golang通道的無阻塞讀寫的方法示例,詳細(xì)的介紹了哪些情況會(huì)存在阻塞,以及如何使用select解決阻塞,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-11-11
  • Golang利用channel協(xié)調(diào)協(xié)程的方法詳解

    Golang利用channel協(xié)調(diào)協(xié)程的方法詳解

    go?當(dāng)中的并發(fā)編程是通過goroutine來實(shí)現(xiàn)的,利用channel(管道)可以在協(xié)程之間傳遞數(shù)據(jù),所以本文就來講講Golang如何利用channel協(xié)調(diào)協(xié)程吧
    2023-05-05
  • go語言中io操作中的 io.Reader 和 io.Writer的獲取方法

    go語言中io操作中的 io.Reader 和 io.Writer的獲取方法

    在Go語言中,要進(jìn)行文件io操作,通常需要使用io.Reader或io.Writer對(duì)象,獲取這些對(duì)象的方法包括使用標(biāo)準(zhǔn)庫中已實(shí)現(xiàn)Read或Write方法的對(duì)象,感興趣的可以了解一下
    2024-10-10
  • VsCode搭建Go語言開發(fā)環(huán)境的配置教程

    VsCode搭建Go語言開發(fā)環(huán)境的配置教程

    這篇文章主要介紹了在VsCode中搭建Go開發(fā)環(huán)境的配置教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論

中阳县| 嘉定区| 延津县| 电白县| 运城市| 兴业县| 饶阳县| 万载县| 武隆县| 会同县| 云霄县| 察雅县| 辛集市| 龙泉市| 新田县| 宣恩县| 大洼县| 威信县| 嵩明县| 本溪市| 沙坪坝区| 彭山县| 来安县| 江达县| 八宿县| 宁强县| 三都| 宁河县| 扎囊县| 资中县| 宝应县| 楚雄市| 镶黄旗| 十堰市| 简阳市| 龙川县| 台南县| 隆昌县| 永州市| 靖安县| 信丰县|