上传图片

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. 新手AS常见问题集锦

    开发环境 以前开发android的时候可以使用eclipse,虽然现在也能使用eclipse,但是google已经不再支持使用eclipse开发android了.因为google有了自己的IDE--- ...

  2. GET /static/css/bootstrap.min.css.map HTTP/1.1" 404

    解决办法:删除bootstrap.min.css文件内容最后一行/*…………*/内容即可

  3. git 初始用法

    Git global setup git config --global user.name "xiaoming" git config --global user.email & ...

  4. 第01组 Alpha冲刺(2/6)

    队名:007 组长博客: https://www.cnblogs.com/Linrrui/p/11861798.html 作业博客: https://edu.cnblogs.com/campus/fz ...

  5. 大龄IT程序员的救赎之道

    不知道从什么时候开始,中年危机持续刷屏,遍布整个职场,横跨各个行业,对各个细分工种的中年男女或者即将步入中年的青年男女几乎形成了垂直打击,而且中年这个年龄分界线从40岁滑落到35岁,甚至到30岁.笔者 ...

  6. win10+py3.6+cuda9.0安装pytorch1.1.0

    参考:清华源失效后如何安装pytorch1.01 GPU版本的安装指令为: conda install pytorch torchvision cudatoolkit=9.0 -c pytorch 这 ...

  7. zabbix TCP 连接数监控

    直接上配置: 1.修改配置 cat userparameter_tcp_connect.conf UserParameter=tcp_connect.established,/opt/app/zabb ...

  8. Java 内存排查,慢慢收集总结

    Java堆外内存排查小结: https://mp.weixin.qq.com/s?__biz=MzA4MTc4NTUxNQ==&mid=2650518612&idx=2&sn= ...

  9. Element + Vue I18n动态import加载国际化语言包翻译文件

    需求 项目为多页应用,包含产品a.b.c.d.e,每个产品都有自己的翻译文件.一次加载所有翻译文件是极度不合理的.于是考虑动态加载. 实现 参考官方文档:延迟加载翻译 项目结构 │ ├── dist ...

  10. js - try..catch详解

    try... catch 1.try...catch和if语句 为什么不用if替换调try...catch? 大部分人都有这样想法 if=>只能判断用户操作 try...catch=>来自 ...