微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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))
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐