上传图片

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. rsync同步备份

    一.服务器端.备份客户端安装 rsync 服务. 1.环境: CentOS 主 IP:172.16.3.18 备 IP:172.16.3.19 2.安装 rsync 软件 #yum install r ...

  2. 我TM怎么这么垃圾

    我现在已经完完全全是个废人了 比黄焖鸡还辣鸡 成绩差的一批 其实我一直就不太会学习,也懒不想学习 所以我就越来越辣鸡 再加上最近精神状态不太好 整天呆呆的 我真的是完完全全的一个废人了

  3. 中国大学生计算机系统与程序设计竞赛 CCF-CCSP-2017 串行调度(serial)

    串行调度(serial) 除等价条件, 根据题意设置限制条件,然后求字典序最小拓扑序. 简洁版 #include<bits/stdc++.h> using namespace std; ; ...

  4. CF732D Exams 题解

    CF732D Exams 题目描述 Vasiliy has an exam period which will continue for \(n\) days. He has to pass exam ...

  5. day 11

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

  6. KVM原理及使用

    Qemu 和 Qemu-kvm Qemu: http://qemu-project.org/Download Qemu-kvm:https://sourceforge.net/projects/kvm ...

  7. 【POJ1416】Shredding Company

    本题传送门 本题知识点:深度优先搜索 + 回溯 本题题意很简单,就是有一条位数不超过6的数字纸条,问你怎么剪这纸条,使得得到的纸条的值的总和最接近目标值(总和不能超过目标值). 比如第一个样例 50 ...

  8. proxmox之cloud-init

    Cloud-Init支持 Cloud-Init是事实上的多分发包,它处理虚拟机实例的早期初始化.使用Cloud-Init,可以在虚拟机管理程序端配置网络设备和ssh密钥.当VM首次启动时,VM内的Cl ...

  9. C/C++的内存对齐

    1.内存对齐之pragma pack语法 语法:#pragma pack( [show] | [push | pop] [, identifier], n )作用:指定结构,联合和类的包对齐方式(pa ...

  10. c++笔试题 已迁移完成

    转载 1.C和C++的特点与区别? 答:(1)C语言特点:1.作为一种面向过程的结构化语言,易于调试和维护: 2.表现能力和处理能力极强,可以直接访问内存的物理地址: 3.C语言实现了对硬件的编程操作 ...