上传图片

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. SpringBoot 的一些学习资源

    很多Java Web开发者目前常用的技术还是SpringBoot,想要工作效率更,在刚入门不久时有必要全面了解一下它的功能特性,而高效学习的方法,除了在官网学习外,还可以看下网上已有的不错的教程.刚看 ...

  2. Internet地址结构

    IP地址结构及分类寻址 IP地址 = <网络号> + <主机号>            ------------IPv4(32bit)点分四组表示法: 192.168.31.1 ...

  3. R 语言处理excel为data.frame

    使用 R包 xlsx 或者 openxlsx 安装 install.packages("xlsx", repos="https://cloud.r-project.org ...

  4. 《京东B2B业务架构演变》阅读笔记

    一.京东 B2B 业务的定位 让各类型的企业都可以在京东的 B 平台上进行采购.建立采购关系. 京东 B2B 的用户群体主要分为 2 类: 一类是大 B 用户.另一类是小 B 用户.京东 B 平台需要 ...

  5. [技术博客] 用户验证码验证机制---redis缓存数据库的使用

    目录 问题引入 初识redis 实际应用 作者:马振亚 问题引入 在这次的开发过程中,我们的需求中有一个是普通用户可以通过特定的机制申请成为社长.因为只有部分人才能验证成功,所以这个最开始想了两种思路 ...

  6. JAVA字符编码二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换

    第二篇:JAVA字符编码系列二:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换   1.函数介绍 在Java中,字符串用统一的Unicode编码,每个字符占用两个字节,与编码有 ...

  7. 范仁义html+css课程---9、video、audio、canvas和svg元素略讲

    范仁义html+css课程---9.video.audio.canvas和svg元素略讲 一.总结 一句话总结: video:HTML5视频标签. audio:html5音频标签. canvas:绘制 ...

  8. enable device: BAR 0 [mem 0x00000000-0x003fffff] not claimed

    /******************************************************************************* * enable device: BA ...

  9. layui 复选框checkbox 实现全选全选

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Better ultra_simple for Slamtec RPLIDAR on Linux

    Improved the ultra_simple program to visualize the samples with GLUT on Linux, tested with Slamtec R ...