如何使用Springboot整合GridFS实现文件操作
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"如何使用Springboot整合GridFS实现文件操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅
千家信息网最后更新 2026年11月02日如何使用Springboot整合GridFS实现文件操作
本篇内容介绍了"如何使用Springboot整合GridFS实现文件操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
目录
GridFsOperations,实现GridFS文件上传下载删除
上传下载删除功能实现
测试
上传
下载
删除
GridFsOperations,实现GridFS文件上传下载删除
最近学习GridFS,想用它整合springboot弄个文件的上传下载。
网上查到的很多资料都是使用GridFsTemplate,还有GridFSBucket来实现的,需要各种额外配置Bean。但是看了spring-data-mongodb的官方文档,以及示例代码,他们只用到了GridFsOperations,无需其他任何配置。
然后就用GridFsOperations写了个文件上传下载的demo,用起来还是很方便的,给大家个参考。
上传下载删除功能实现
pom.xml
org.springframework.boot spring-boot-starter-data-mongodb
application.properties
#文件上传下载配置spring.servlet.multipart.max-file-size=1024MBspring.servlet.multipart.max-request-size=1024MB
FileController
package com.example.tryRedis.controller;import static org.springframework.data.mongodb.core.query.Query.*;import static org.springframework.data.mongodb.gridfs.GridFsCriteria.*;import com.mongodb.client.gridfs.model.GridFSFile;import io.swagger.v3.oas.annotations.Parameter;import org.bson.types.ObjectId;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.gridfs.GridFsOperations;import org.springframework.data.mongodb.gridfs.GridFsResource;import org.springframework.http.MediaType;import org.springframework.web.bind.annotation.*;import org.springframework.web.multipart.MultipartFile;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.util.HashMap;import java.util.Map;@RestController@RequestMapping("/file")public class FileController { @Autowired GridFsOperations gridFsOperations; //上传文件 @PostMapping(value = "/upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public Map upload(@Parameter @RequestPart(value = "file") MultipartFile file){ //开始时间 long begin = System.nanoTime(); Map map = new HashMap<>(); try{ InputStream streamForUpload = file.getInputStream(); ObjectId objectId = gridFsOperations.store(streamForUpload,file.getOriginalFilename(),file.getContentType()); //上传结束 long end = System.nanoTime(); long time = end-begin; System.out.println("本次上传共耗时: "+ time); System.out.println("上传成功!文件名: "+file.getOriginalFilename()+". 文件ID: "+objectId); map.put(file.getOriginalFilename(),objectId); }catch (Exception e){ e.printStackTrace(); } return map; } //查询并下载文件 @GetMapping("/download") public String download(String filename, HttpServletResponse response) throws IOException { //开始时间 long begin = System.nanoTime(); //查询文件 GridFSFile result = gridFsOperations.findOne(query(whereFilename().is(filename))); GridFsResource gridFsResource= gridFsOperations.getResource(result); String contentType = gridFsResource.getContentType(); System.out.println("contentType: "+contentType); System.out.println("filename: "+gridFsResource.getFilename()); response.reset(); response.setContentType(contentType); //注意: 如果没有下面这行设置header, 结果会将文件的内容作为响应的 body 直接输出在页面上, 而不是下载文件 response.setHeader("Content-Disposition","attachment;filename="+filename); //指定下载文件名 ServletOutputStream outputStream = response.getOutputStream(); InputStream is = gridFsResource.getInputStream(); byte[] bytes = new byte[1024]; int len = 0; while ((len=is.read(bytes))!=-1){ outputStream.write(bytes,0,len); } is.close(); outputStream.close(); //下载结束 long end = System.nanoTime(); long time = end-begin; System.out.println("本次下载共耗时: "+ time); return contentType; } @DeleteMapping("/delete") public String deleteFile(@Parameter @RequestParam("filename") String filename){ gridFsOperations.delete(query(whereFilename().is(filename))); return "delete success"; }} 测试
上传

下载
红色圈内点击download就可以下载啦。或者在地址栏直接输入localhost:8080/file/download?filename=todo.txt 也可以直接下载文件(这里的todo.txt是我测试的文件,你们填自己上传的文件名,不要忘了加上后缀名!)

删除
上面这些上传删除功能测试的时候,大家也可以结合mongodb的数据库去看看。
"如何使用Springboot整合GridFS实现文件操作"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
文件
上传下载
测试
整合
内容
功能
文件名
配置
时间
更多
知识
学习
查询
输出
实用
成功
学有所成
接下来
代码
功能测试
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
喔噻互联网科技有限公司
重生之互联网科技帝国
互联网科技会
科技类互联网
互联网科技的发展
奇酷互联网科技
互联网科技革命
华中科技大学互联网
互联网 视角下的科技创新
猫创互联网科技
狮子座互联网科技培训
天扬科技互联网广告
科技大学互联网专业好不好
重庆互联网医院沙龙医盟信息科技
岳阳华臻互联网科技有限公司
米聚互联网科技南京有限公司排面
科技类公司包括互联网吗
浙南科技城互联网大厦建设工程
广州千川互联网科技有限公司
互联网科技企业文化
互联网金融 科技金融
天下捷融互联网科技
互联网科技创新企业排名
中国的互联网科技企业的崛起
阿大互联网科技有限公司
黑科技 体验场景 互联网大会
福州德业互联网科技
同城互联网络科技
中国互联网公司的科技投入
利用互联网等科技手段