上传图片

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

Gin上传文件到MongoDB gridfs的更多相关文章

  1. Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程

    Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core W ...

  2. django MongoDB上传文件

    django上传文件,查询到的资料都是用的django自己的models.Model类,去定义一个FileField类型的存储文件,并且在里面加一句upload_to,如下所示:   但是如果用mon ...

  3. ubuntu16.04安装mongodb,创建数据库管理员,上传文件到服务器上

    1.导入软件源得公钥 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 2.为mongodb创建软件 ...

  4. golang 上传文件(包括 gin 实现)

    golang web服务有时候需要提供上传文件的接口,以下就是具体示例.为了示例简单(吐槽下 golang 的错误处理), 忽略了所有的错误处理.本文会用两种方式(标准库和gin)详细讲解 golan ...

  5. Gin 08 上传文件

    单文件上传 cat index.html <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  6. Spring中servletFileUpload完成上传文件以及文本的处理

    JSP: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...

  7. fetch上传文件报错的问题(multipart: NextPart: EOF)

    技术栈 后台: gin(golang) 前端: react+antd+dva 问题 前端这边使用fetch发送http请求的时候,后端解析formData报错: multipart: NextPart ...

  8. 基于tornado python pandas和bootstrap上传组件的mongodb数据添加工具

    总体思路:基于bootstrap4的前端页面上传组件,把excel文件上传至服务器,并利用python pandas读取里面的数据形成字典列表 通过pymongo 接口把数据插入或追加到mongodb ...

  9. IE8/9 JQuery.Ajax 上传文件无效

    IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...

随机推荐

  1. day 11

    Clear thinking requires courage rather than intelligence. 清晰的思维需要勇气而不是智力.

  2. nginx.conf 配置解析之 events配置

    worker_connections 1024; 定义每个work_process同时开启的最大连接数,即允许最多只能有这么多连接. accept_mutex on; 当某一个时刻只有一个网络连接请求 ...

  3. python自动化测试学习目录

    一.python学习目录 <1> ----python驱动 [python驱动]python进行selenium测试时GeckoDriver放在什么地方? python下浏览器静默运行驱动 ...

  4. Git 自救指南:这些坑你都跳得出吗?

    阅读本文大概需要 2 分钟. 菜单栏中添加我微信,私聊[加群]拉你入微信学习交流群 Git 虽然因其分布式管理方式,不完全依赖网络,良好的分支策略,容易部署等优点,已经成为最受欢迎的源代码管理方式. ...

  5. Phoenix概述

    Phoenix是Salesforce.com开源的一个项目,可以让开发者在Apache HBase上执行SQL查询. Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执 ...

  6. idea2017显示maven Project菜单

    右侧就出现 maven project菜单了.

  7. 一个按权重(weight)进行LB的算法

    package netty; import com.google.common.collect.ImmutableList; import lombok.SneakyThrows; import ja ...

  8. java8在Stream的forEach操作时获取index

      import java.util.Objects; import java.util.function.BiConsumer; /** * * @author yangzhilong * @dat ...

  9. ES6 - 字符串的扩展(模版字符串)

    模板字面量的最简单语法,是使用反引号( `)(Tab上面那个键)来包裹普通字符串,而不是用双引号或单引号. <!DOCTYPE html> <html lang="en&q ...

  10. 【转载】 tf.ConfigProto和tf.GPUOptions用法总结

    原文地址: https://blog.csdn.net/C_chuxin/article/details/84990176 -------------------------------------- ...