设为首页 加入收藏

TOP

Gin上传文件到MongoDB gridfs
2019-06-11 14:06:30 】 浏览:20
Tags: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)) }

编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇深度解密Go语言之context 下一篇PHP转Go系列:字符串

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }