zoukankan      html  css  js  c++  java
  • 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))
    }
    
  • 相关阅读:
    python安装教程
    protobuf安装教程
    PlantUML安装教程
    题解-CF1140E Palindrome-less Arrays
    FST
    线段树
    题解-CF677D Vanya and Treasure
    最短路
    后缀自动机
    虚树
  • 原文地址:https://www.cnblogs.com/daryl-blog/p/11002995.html
Copyright © 2011-2022 走看看