MongodbGFS结合SpringBoot 实现大文件的简单上传与下载

本文介绍了如何在SpringBoot项目中利用MongodbGFS进行大文件的上传和下载操作。首先创建SpringBoot工程,添加相关依赖,配置mongodb和thymeleaf。然后使用GridFsTemplate进行文件存储和检索。通过控制器处理文件上传和下载请求,实现文件的分布式存储。
摘要由CSDN通过智能技术生成

今天主要为大家带来SpringBoot工程中MongodbGFS的简单使用。首先,我们的思路是,用表单提交文件,直接将文件存入Mongodb数据库中,然后将文件直接从数据库下载到客户端。当然我们用的是GFS结构的存储,因此我们的文件最好大于16M以上。这也与mongodb官方的建议相一致。这里还有不清楚的可以看我之前的一篇博客《MongodbGFS存储大文件》,链接
首先我们做一下准备工作,初始化一个SpringBoot工程。这里我继续使用的是gradle。

添加我们需要的依赖,spring-boot-starter-test 用gradle初始化springboot工程时默认添加了,除了这个我们需要添加额外的两个依赖就是,spring-boot-starter-data-mongodb和spring-boot-starter-thymeleaf(模板引擎用来生成网页)。

添加了依赖之后,我们需要进行配置mongodb,thymeleaf。具体的配置说明可以查看官方文档 mongodb使用说明模板引擎在springboot中的配置

这里可以看一下我的配置文件。

#thymeleaf start
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
spring.thymeleaf.cache=false
#thymeleaf end

#mongodb start
spring.data.mongodb.uri=mongodb://39.106.177.24:27017/zhaotong
#mongodb end


#uploadfile start
spring.http.multipart.max-file-size=1024000KB
spring.http.multipart.max-request-size=2048000KB
#uploadfile end
关于mongodb uri的具体格式,我建议是直接去看源码:


下面的同时也配置了让springmvc放开文件大小的限制,因为我们主要做的是大文件上传。

接下来我们学习一下Springboot提供给我们关于 mongodb的操作工具类。主要我们看3个类:MongoTemplate.class   MongodbFactory.class    GridFsTemplate.class

首先mongoFacory 其实就和hibernateFactory一样为我们提供基于Mongodb的会话工厂。这里我们看源码:


它主要给我们返回DB对象,这里要说明这个类是线程安全的,为什么是线程安全的呢?我们接着来看DB这个类


很明显DB是线程安全的,那么工厂如何让提供给我们的的db是线程安全的呢?所以就有了接下来这段代码:


大家可以看到了ConcurrentHashMap出现了,所以这里希望大家多看看源代码,是有好处的。

至于MongoTemplate.class 这个类其实和jdbcTemplate扮演的角色一样,这里就不多说了,我们今天主要用到的是GridFsTemplate.class。我们看这个类的源码,我们今天所使用的方法都是来源于这个类。

/*
 * Copyright 2011-2017 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the Licen
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值