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))
    }
    
  • 相关阅读:
    《神经网络设计》读书笔记第一章
    <转>How to Encourage Your Child's Interest in Science and Tech
    <转>卷积神经网络是如何学习到平移不变的特征
    卷积神经网络物体检测之感受野大小计算
    神经网络向量化求反向传播梯度
    SSD框架训练自己的数据集
    object detect links
    Computer vision labs
    Deep Learning Blog lists
    YOLO: Real-Time Object Detection
  • 原文地址:https://www.cnblogs.com/daryl-blog/p/11002995.html
Copyright © 2011-2022 走看看