/**
* 上传一个图片文件,保存到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. [机器学习] Yellowbrick使用笔记8-模型选择可视化

    Yellowbrick可视化工具旨在指导模型选择过程.一般来说,模型选择是一个搜索问题,定义如下:给定N个由数值属性描述的实例和(可选)一个估计目标,找到一个由特征.算法和最适合数据的超参数组成的三元 ...

  2. 3_多维数组转一维数组 reduce()

    一,二维数组转一维数组 1 //1. 二维数组转一维数组 2 let arr = [[0,1],[2,3],[4,5]] 3 let newArr = arr.reduce((pre,cur) =&g ...

  3. 【Surface Detection】Segmentation-Based Deep-Learning Approach for Surface-Defect Detection

    物体表面缺陷检测现状 传统机器学习局限性 传统机器学习方法对于特定的算法只能解决特定的问题,不够灵活,无法快速适应新产品: 不同的问题有不同的特征,当需要解决新问题时,需要重新设计特征,开发周期长: ...

  4. CentOS7.6系统安装和网络配置

    CentOS7.6系统安装配置 前言:文章内容可能会因环境不同而有所差异,所谓集思广益说不定灵感就来了呢; 文章初衷旨在交流学习.记录个人成长,如果能帮助到您,那就点个赞噢. 环境说明: 1.本实验使 ...

  5. Vue 快速入门(一)

    1.介绍 Vue(读音/vju/,类似view),是中国的大神尤雨溪开发的,为数不多的国人开发的世界顶级开源软件.是一套用于构建用户界面的渐进式框架,Vue 被设计为可以自底向上逐层应用.MVVM响应 ...

  6. 使用ng-zorro图标库出现the icon redo-o does not exist or is not registered.

    出现这种情况一般是因为没导入你要的图标 可以在项目目录找到这个文件  src\style-icons-auto.ts 然后打开,导入导出里加上你要导入的图标....  就可以了 如果你不知道要怎么加 ...

  7. 通过this引用成员方法-类的构造器

    通过this引用成员方法 this代表当前对象,如果需要引用的方法就是当前类中的成员方法,那么可以使用"this成员方法"的格式来使用方法引用.首先是简单的函数式接口︰ 下面是一个 ...

  8. Unity之Android端权限申请

    Unity之Android端权限申请 Unity之Android端权限申请 前言 开篇废话 Unity版本 正题 前期准备 挂载脚本 打包发布 安装App 查看结果 结尾 唠家常 今日无推荐 Unit ...

  9. JavaScript 评测代码运行速度

    一.使用 performance.now() API 在 JavaScript 中,可以使用 performance.now() API 来评测代码的运行速度.该 API 返回当前页面的高精度时间戳, ...

  10. 翻译《threejsfundamentals》离屏渲染+web-worker一篇

    Three.js OffscreenCanvas    OffscreenCanvas是一种相对较新的浏览器功能,目前仅在Chrome中可用,但显然也即将适用于其他浏览器. OffscreenCanv ...