/**
* 上传一个图片文件,保存到mongo数据库中
* @param doc
* @param parent 文件所在的目录
* @param request
* @return
*/
@PostMapping("/uploaddoc")
public ErrorMessage uploaddoc(MultipartFile doc, @RequestParam String parent, HttpServletRequest request) throws IOException {
ErrorMessage result = new ErrorMessage();
MongoDatabase db = mongoTemplate.getDb();
GridFSBucket bucket = GridFSBuckets.create(db, "docs"); // 打开一个对象,不存在时创建
GridFSUploadStream uploadStream = bucket.openUploadStream(doc.getOriginalFilename());
uploadStream.write(doc.getBytes());
System.out.println(uploadStream.getObjectId());
uploadStream.close();
  return result;
}

/**
* 下载一个图片文件,显示在前端<img>中
*/
@GetMapping("/downloadImage/{uuid}")
public ErrorMessage downloadImage(@PathVariable String uuid, HttpServletResponse response) throws IOException {
MongoDatabase db = mongoTemplate.getDb();
GridFSBucket bucket = GridFSBuckets.create(db, "docs"); // 打开一个已存在的对象
// uuid为图片文件在Mongo数据库中的Id
GridFSDownloadStream downloadStream;
try {
downloadStream = bucket.openDownloadStream(new ObjectId(uuid));
} catch (Exception e) {
response.setStatus(412);
return ErrorMessage.create("指定图片不存在!");
}
OutputStream outputStream = response.getOutputStream();
IOUtils.copy(downloadStream, outputStream);
downloadStream.close();
outputStream.close();
return null;
}
 
// 前端部分代码
// http://localhost:8080/downloadImage/5dca4f1d911b52478896430e 是访问后端的接口

// 5dca4f1d911b52478896430e是GridFs对象的ObjectId

<img id="img1" src="">
<button onclick="showImage()">get Image</button>
<script>
function showImage() {
document.getElementById('img1').src='http://localhost:8080/downloadImage/5dca4f1d911b52478896430e';
}
</script>

上传图片到Mongo数据库;从Mongo数据库下载图片显示到前端的更多相关文章

  1. 使用Requests+正则表达式爬取猫眼TOP100电影并保存到文件或MongoDB,并下载图片

    需要着重学习的地方:(1)爬取分页数据时,url链接的构建(2)保存json格式数据到文件,中文显示问题(3)线程池的使用(4)正则表达式的写法(5)根据图片url链接下载图片并保存(6)MongoD ...

  2. Android中使用HttpURLConnection实现GET POST JSON数据与下载图片

    Android中使用HttpURLConnection实现GET POST JSON数据与下载图片 Android6.0中把Apache HTTP Client全部的包与类都标记为deprecated ...

  3. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

  4. 使用官方组件下载图片,保存到MySQL数据库,保存到MongoDB数据库

    需要学习的地方,使用官方组件下载图片的用法,保存item到MySQL数据库 需要提前创建好MySQL数据库,根据item.py文件中的字段信息创建相应的数据表 1.items.py文件 from sc ...

  5. Scrapy Item用法示例(保存item到MySQL数据库,MongoDB数据库,使用官方组件下载图片)

    需要学习的地方: 保存item到MySQL数据库,MongoDB数据库,下载图片 1.爬虫文件images.py # -*- coding: utf-8 -*- from scrapy import ...

  6. python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)

    1. 场景描述 一直做java,因项目原因,需要封装一些经典的算法到平台上去,就一边学习python,一边网上寻找经典算法代码,今天介绍下经典的K-means聚类算法,算法原理就不介绍了,只从代码层面 ...

  7. [MySQL数据库之数据库相关概念、MySQL下载安装、MySQL软件基本管理、SQL语句]

    [MySQL数据库之数据库相关概念.MySQL下载安装.MySQL软件基本管理.SQL语句] 数据库相关概念 数据库管理软件的由来 数据库管理软件:本质就是个C/S架构的套接字程序. 我们在编写任何程 ...

  8. 数据库与MySQL的下载使用

    目录 数据存储演变史 数据库应用发展史 数据库本质 数据库分类 关系型数据库 非关系型数据库 SQL与NoSQL MySQL简介 版本问题 下载使用 目录结构 基本使用 简单使用 系统服务 修改密码 ...

  9. C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体

    //浏览图片 private void btnUp_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialo ...

  10. windows下安装mongodb数据库以及使用数据库

    首先下载mongodb, 链接: https://pan.baidu.com/s/1KyvF7bAqGM8K-ir-hFNhPw 密码: vlc9 双击进行安装 勾选我接受并单击next 选择cust ...

随机推荐

  1. Hive详解(01) - 概念

    Hive详解(01) - 概念 hive简介 Hive:由Facebook开源用于解决海量结构化日志的数据统计工具,是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类S ...

  2. Android 使用实现简单的音乐播放以及管理

    这里主要通过 MediaPlayer以及 AudioManager 来实现的对应的功能. 1.第一种,播放本地媒体文件: 你需要自己准备一个MP3格式的音频文件: 然后在资源目录(res)里面新建一个 ...

  3. 降本超30%,智聆口语通过 TKE 注册节点实现 IDC GPU 节点降本增效实践

    背景介绍 腾讯云智聆口语评测(Smart Oral Evaluation,SOE)是腾讯云推出的中英文语音评测产品,支持从儿童到成人全年龄覆盖的语音评测,提供单词.句子.段落.自由说等多种评测模式,从 ...

  4. python基础23 之初识面向对象

    人狗大战 # 编写代码简单实现人打狗 狗咬人的小游戏 """推导步骤1:代码定义出人和狗""" person1 = { 'name': 'j ...

  5. 题解P3847 [TJOI2007]调整队形

    简要题意 给出一个长度为 \(n\) 的序列 \(A\),你需要执行下面的操作,将这个序列变成回文序列: 在序列左右侧或中间插入一个元素,元素数值任意. 删除一个元素. 更改一个元素的值. \(1 \ ...

  6. 2023牛客寒假算法基础集训营3 A-I+K

    A 题解 知识点:贪心. 把所有正偶数除成奇数,即可. (人傻了没加 \(x>0\) WA2 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) 代码 #include <bits ...

  7. Unity之语音识别

    Unity之语音识别 前言 开篇 Unity版本及使用插件 正题 写脚本 挂载到游戏场景中 结尾 唠家常 今日无推荐 前言 开篇 今儿心情好,哈哈哈哈哈 今天小黑给大家带来Unity的语音识别功能,超 ...

  8. ResponseBodyAdvice处理返回数据

    package com.xf.config; import org.slf4j.MDC; import org.springframework.core.MethodParameter; import ...

  9. python学习第五周总结

    面向对象前戏之人狗大战 # 编写代码简单的实现人打狗 狗咬人的小游戏(剧情需要) """推导步骤1:代码定义出人和狗""" person1 ...

  10. JAVA虚拟机04---对象的创建

    主要是针对HotSpot虚拟机来说的 1.对象的创建过程-new 对象() 1.1检查类是否被加载 检查创建的这个对象的类是否能在常量池中找到类的符号引用,并检查这个类是否被加载.解析和初始化.如果没 ...