Gin上传文件到MongoDB gridfs

上传图片

func imagePost(c *gin.Context) {
    image, err := c.FormFile("file")
    if err != nil {
        errMsg := err.Error()
        logger.Error(errMsg)
        autorestapi.RespErr(c, errMsg)
        return
    }
    fileImage, err := image.Open()
    if err != nil {
        errMsg := err.Error()
        logger.Error(errMsg)
        autorestapi.RespErr(c, errMsg)
        return
    }
    defer fileImage.Close()
    imageGridFS, err := model.GetGridFS("image")
    if err != nil {
        errMsg := err.Error()
        logger.Error(errMsg)
        autorestapi.RespErr(c, errMsg)
        return
    }
    now := self_time.GetNowTimeStamp()
    nowStr := strconv.FormatInt(now, 10)
    file, err := imageGridFS.Create(nowStr)
    if err != nil {
        errMsg := err.Error()
        logger.Error(errMsg)
        autorestapi.RespErr(c, errMsg)
        return
    }
    file.SetName(nowStr)
    _, err = io.Copy(file, fileImage)
    if err != nil {
        errMsg := err.Error()
        logger.Error(errMsg)
        autorestapi.RespErr(c, errMsg)
        return
    }

    err = file.Close()
    if err != nil {
        errMsg := err.Error()
        logger.Error(errMsg)
        autorestapi.RespErr(c, errMsg)
        return
    }

    autorestapi.RespData(c, nowStr)
}

下载图片

func imageGet(c *gin.Context) {
    imagename := c.Param("imagename")
    imageGridFS, err := model.GetGridFS("image")
    if err != nil {
        errMsg := err.Error()
        logger.Error(errMsg)
        autorestapi.RespErr(c, errMsg)
        return
    }
    file, err := imageGridFS.Open(imagename)
    if err != nil {
        errMsg := err.Error()
        logger.Error(errMsg)
        autorestapi.RespErr(c, errMsg)
        return
    }
    size := file.Size()
    io.Copy(c.Writer, file)
    err = file.Close()
    if err != nil {
        errMsg := err.Error()
        logger.Error(errMsg)
        autorestapi.RespErr(c, errMsg)
        return
    }
    c.Writer.WriteHeader(http.StatusOK)
    c.Header("Content-Disposition", fmt.Sprintf("attachment; filename=%s", imagename))
    c.Header("Content-Type", "application/text/plain")
    c.Header("Accept-Length", fmt.Sprintf("%d", size))
}

转载于:https://www.cnblogs.com/daryl-blog/p/11002995.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值