电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SpringBoot整合MongoDB實現文件上傳下載刪除

瀏覽:72日期:2023-03-13 11:57:46
本文主要內容 MongoDB基礎操作命令示例練習 MongoDB居于GridFSTemplate的文件上傳、下載、刪除等操作(工作重點使用) 1. 基礎命令

創建的數據庫名稱:horse,創建的集合名稱:blog

# 創建數據庫use horse# 刪除當前數據庫[horse]db.dropDatebase()# 查看所有數據庫show dbs # 設置用戶的角色和權限db.createUser({user:'horse',pwd:'mongo123',roles:[{role:'readWrite',db:'horse'}]})# 創建指定名稱的集合db.createCollection('blog')# 刪除指定名稱集合db.blog.drop()# 查看當前數據庫[horse]中所有集合show collections# 插入文檔db.blog.insert({'name':'Tom','age':23,'sex':true})db.blog.insertOne({'name':'Top','age':20,'sex':true})db.blog.insertMany([{'name':'Jerry','age':22,'sex':false},{'name':'Free','age':21,'sex':true}])# 更新文檔db.blog.update({'name':'Top'},{$set:{'name':'TopSun'}},{multi:true})# 刪除文檔db.blog.remove({'sex':false}, true)db.blog.deleteMany({'age':23})db.blog.deleteOne({'age':22})# 刪除集合所有數據db.blog.deleteMan({})# 查詢文檔db.blog.find().pretty() # 通過查詢方式(沒有條件,查詢所有)db.blog.findOne({'name':'Tom'}) # 查詢一個db.blog.find({'age':{$lt: 23},'name':'Free'}).pretty() # 默認and連接查詢db.blog.find({$or:[{'age':{$lt:23}},{'name':'Free'}]}).pretty() # or連接查詢db.blog.find({'age':{$lt:23},$or:[{'name':'Free'},{'sex':'false'}]}).pretty() # and和or聯合使用查詢db.blog.find().limit(2).skip(1).sort({'age':1}).pretty() # limit、skip、sort聯合使用(執行順序:sort-> skip ->limit)# 聚合查詢(參考文檔)db.blog.aggregate([{$group:{_id:'$age',count:{$sum:1}}}])2. GridFsTemplate使用2.1引入pom依賴

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>2.2 配置yml

spring: data: mongodb: host: *.*.*.* username: *** password: *** database: *** port: 27017 # 設置文件上傳的大小限制 servlet: multipart: max-file-size: 10MB max-request-size: 50MB2.3 上傳下載刪除

面對疾風吧:接合HuTool工具包食用更佳!!!

/** * @author Mr.Horse * @version 1.0 * @description: MongoDB的文件上傳、下載、刪除等基本操作(集合HuTool工具庫) * @date 2021/4/29 9:53 */@Validated@Controller@RequestMapping('/mongo')public class MongoUploadController { private static Logger logger = LoggerFactory.getLogger(MongoUploadController.class); @Autowired private GridFsTemplate gridFsTemplate; @Autowired private MongoTemplate mongoTemplate; private static final List<String> CONTENT_TYPES = Arrays.asList('image/gif', 'image/jpeg', 'image/jpg', 'image/png'); /** * MongoDB文件上傳(圖片上傳) * * @param file * @return */ @PostMapping('/upload') public ResponseEntity<String> fileUpload(@RequestParam('file') MultipartFile file) {try { // 校驗文件信息(文件類型,文件內容) String originalFilename = file.getOriginalFilename(); if (StrUtil.isBlank(originalFilename)) {return ResponseEntity.badRequest().body('參數錯誤'); } String contentType = file.getContentType(); if (!CONTENT_TYPES.contains(contentType)) {return ResponseEntity.badRequest().body('文件類型錯誤'); } InputStream inputStream = file.getInputStream(); BufferedImage bufferedImage = ImageIO.read(inputStream); if (ObjectUtil.isEmpty(bufferedImage)) {return ResponseEntity.badRequest().body('文件內容錯誤'); } // 文件重命名 String suffix = FileNameUtil.getSuffix(originalFilename); String fileName = IdUtil.simpleUUID().concat('.').concat(suffix); // 文件上傳,返回ObjectId ObjectId objectId = gridFsTemplate.store(inputStream, fileName, contentType); return StrUtil.isBlank(String.valueOf(objectId)) ? ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body('文件上傳失敗') : ResponseEntity.ok(String.valueOf(objectId));} catch (IOException e) { return ResponseEntity.badRequest().body('文件上傳異常');} } /** * 根據ObjectId讀取文件并寫入響應流,頁面進行進行相關操作,可以進行文件的下載和展示 * * @param objectId */ @GetMapping('/read') public void queryFileByObjectId(@RequestParam('objectId') @NotBlank(message = 'ObjectId不能為空') String objectId, HttpServletResponse response) {// 根據objectId查詢文件GridFSFile file = gridFsTemplate.findOne(new Query(Criteria.where('_id').is(objectId)));// 創建一個文件桶GridFSBucket gridFsBucket = GridFSBuckets.create(mongoTemplate.getDb());InputStream inputStream = null;OutputStream outputStream = null;try { if (ObjectUtil.isNotNull(file)) {// 打開下載流對象GridFSDownloadStream fileStream = gridFsBucket.openDownloadStream(file.getObjectId());// 創建girdFsResource,傳入下載流對象,獲取流對象GridFsResource gridFsResource = new GridFsResource(file, fileStream);// 寫入輸出流inputStream = gridFsResource.getInputStream();outputStream = response.getOutputStream();byte[] bytes = new byte[1024];if (inputStream.read(bytes) != -1) { outputStream.write(bytes);} }} catch (IOException e) { logger.error('文件讀取異常: {}', e.getMessage());} finally { IoUtil.close(outputStream); IoUtil.close(inputStream);} } /** * 根據ObjectId刪除文件 * * @param objectId * @return */ @DeleteMapping('/remove') public ResponseEntity<String> removeFileByObjectId(@RequestParam('objectId') @NotBlank(message = 'ObjectId不能為空') String objectId) {gridFsTemplate.delete(new Query(Criteria.where('_id').is(objectId)));return ResponseEntity.ok('刪除成功'); }}

如果需要實現在瀏覽器頁面下載此資源的功能,可結合js進行操作(文件類型根據具體業務需求而定)。主要實現代碼如下所示:

downloadNotes(noteId) { axios({url: this.BASE_API + ’/admin/mongo/file/query/’ + noteId,method: ’get’,responseType: ’arraybuffer’,params: { type: ’download’ } }).then(res => {// type類型可以設置為文本類型,這里是pdf類型const pdfUrl = window.URL.createObjectURL(new Blob([res.data], { type: `application/pdf` }))const fname = noteId // 下載文件的名字const link = document.createElement(’a’)link.href = pdfUrllink.setAttribute(’download’, fname)document.body.appendChild(link)link.click()URL.revokeObjectURL(pdfUrl) // 釋放URL 對象 }) }

以上就是SpringBoot整合MongoDB實現文件上傳下載刪除的詳細內容,更多關于SpringBoot整合MongoDB的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
主站蜘蛛池模板: 99文库_实习生实用的范文资料文库站 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | 路面机械厂家 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 北京签证代办_签证办理_商务签证_旅游签证_寰球签证网 | 超声波焊接机,振动摩擦焊接机,激光塑料焊接机,超声波焊接模具工装-德召尼克(常州)焊接科技有限公司 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 浙江宝泉阀门有限公司 | 福建珂朗雅装饰材料有限公司「官方网站」 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 | 震动筛选机|震动分筛机|筛粉机|振筛机|振荡筛-振动筛分设备专业生产厂家高服机械 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 烽火安全网_加密软件、神盾软件官网| 震动筛选机|震动分筛机|筛粉机|振筛机|振荡筛-振动筛分设备专业生产厂家高服机械 | RS系列电阻器,RK_RJ启动调整电阻器,RQ_RZ电阻器-上海永上电器有限公司 | 陶氏道康宁消泡剂_瓦克消泡剂_蓝星_海明斯德谦_广百进口消泡剂 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司 | 【黄页88网】-B2B电子商务平台,b2b平台免费发布信息网 | 粉碎机_塑料粉碎机_塑料破碎机厂家-星标机械| 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 华禹护栏|锌钢护栏_阳台护栏_护栏厂家-华禹专注阳台护栏、楼梯栏杆、百叶窗、空调架、基坑护栏、道路护栏等锌钢护栏产品的生产销售。 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 河南生物显微镜,全自动冰冻切片机-河南荣程联合科技有限公司 | 营养师网,营养师考试时间,报名入口—网站首页 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 耐磨陶瓷管道_除渣器厂家-淄博浩瀚陶瓷科技有限公司 | 二氧化碳/活性炭投加系统,次氯酸钠发生器,紫外线消毒设备|广州新奥 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | 驾驶式洗地机/扫地机_全自动洗地机_工业洗地机_荣事达工厂官网 | 河南正规膏药生产厂家-膏药贴牌-膏药代加工-修康药业集团官网 | 泰国试管婴儿_泰国第三代试管婴儿费用|成功率|医院—新生代海外医疗 | 杭州火蝠电商_京东代运营_拼多多全托管代运营【天猫代运营】 | OLChemim试剂-ABsciex耗材-广州市自力色谱科仪有限公司 | 苏商学院官网 - 江苏地区唯一一家企业家自办的前瞻型、实操型商学院 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 |