日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

SpringBoot整合MongoDB實(shí)現(xiàn)文件上傳下載刪除

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

創(chuàng)建的數(shù)據(jù)庫名稱:horse,創(chuàng)建的集合名稱:blog

# 創(chuàng)建數(shù)據(jù)庫use horse# 刪除當(dāng)前數(shù)據(jù)庫[horse]db.dropDatebase()# 查看所有數(shù)據(jù)庫show dbs # 設(shè)置用戶的角色和權(quán)限db.createUser({user:'horse',pwd:'mongo123',roles:[{role:'readWrite',db:'horse'}]})# 創(chuàng)建指定名稱的集合db.createCollection('blog')# 刪除指定名稱集合db.blog.drop()# 查看當(dāng)前數(shù)據(jù)庫[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})# 刪除集合所有數(shù)據(jù)db.blog.deleteMan({})# 查詢文檔db.blog.find().pretty() # 通過查詢方式(沒有條件,查詢所有)db.blog.findOne({'name':'Tom'}) # 查詢一個(gè)db.blog.find({'age':{$lt: 23},'name':'Free'}).pretty() # 默認(rèn)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聯(lián)合使用查詢db.blog.find().limit(2).skip(1).sort({'age':1}).pretty() # limit、skip、sort聯(lián)合使用(執(zhí)行順序: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 # 設(shè)置文件上傳的大小限制 servlet: multipart: max-file-size: 10MB max-request-size: 50MB2.3 上傳下載刪除

面對(duì)疾風(fēng)吧:接合HuTool工具包食用更佳?。。?/p>

/** * @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 { // 校驗(yàn)文件信息(文件類型,文件內(nèi)容) String originalFilename = file.getOriginalFilename(); if (StrUtil.isBlank(originalFilename)) {return ResponseEntity.badRequest().body('參數(shù)錯(cuò)誤'); } String contentType = file.getContentType(); if (!CONTENT_TYPES.contains(contentType)) {return ResponseEntity.badRequest().body('文件類型錯(cuò)誤'); } InputStream inputStream = file.getInputStream(); BufferedImage bufferedImage = ImageIO.read(inputStream); if (ObjectUtil.isEmpty(bufferedImage)) {return ResponseEntity.badRequest().body('文件內(nèi)容錯(cuò)誤'); } // 文件重命名 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('文件上傳異常');} } /** * 根據(jù)ObjectId讀取文件并寫入響應(yīng)流,頁面進(jìn)行進(jìn)行相關(guān)操作,可以進(jìn)行文件的下載和展示 * * @param objectId */ @GetMapping('/read') public void queryFileByObjectId(@RequestParam('objectId') @NotBlank(message = 'ObjectId不能為空') String objectId, HttpServletResponse response) {// 根據(jù)objectId查詢文件GridFSFile file = gridFsTemplate.findOne(new Query(Criteria.where('_id').is(objectId)));// 創(chuàng)建一個(gè)文件桶GridFSBucket gridFsBucket = GridFSBuckets.create(mongoTemplate.getDb());InputStream inputStream = null;OutputStream outputStream = null;try { if (ObjectUtil.isNotNull(file)) {// 打開下載流對(duì)象GridFSDownloadStream fileStream = gridFsBucket.openDownloadStream(file.getObjectId());// 創(chuàng)建girdFsResource,傳入下載流對(duì)象,獲取流對(duì)象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);} } /** * 根據(jù)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('刪除成功'); }}

如果需要實(shí)現(xiàn)在瀏覽器頁面下載此資源的功能,可結(jié)合js進(jìn)行操作(文件類型根據(jù)具體業(yè)務(wù)需求而定)。主要實(shí)現(xiàn)代碼如下所示:

downloadNotes(noteId) { axios({url: this.BASE_API + ’/admin/mongo/file/query/’ + noteId,method: ’get’,responseType: ’arraybuffer’,params: { type: ’download’ } }).then(res => {// type類型可以設(shè)置為文本類型,這里是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 對(duì)象 }) }

以上就是SpringBoot整合MongoDB實(shí)現(xiàn)文件上傳下載刪除的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot整合MongoDB的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲啊v在线| 裤袜国产欧美精品一区| 国产videos久久| 亚洲午夜免费| 国产精品呻吟| 极品日韩av| 国产精品蜜月aⅴ在线| 亚洲bt欧美bt精品777| 五月婷婷六月综合| 亚洲成a人片| 高清不卡一区| 麻豆91精品91久久久的内涵| 免费日韩av| 亚洲少妇一区| 欧美中文一区二区| 亚洲不卡系列| 九色porny丨国产首页在线| 麻豆中文一区二区| 亚洲精品极品| 亚洲毛片网站| 亚洲人成毛片在线播放女女| 午夜av一区| 激情五月色综合国产精品| 五月激情久久| 日本а中文在线天堂| 精品久久久久中文字幕小说| 久久wwww| 另类综合日韩欧美亚洲| 久久超级碰碰| 国产精品毛片久久| 黄色网一区二区| а√在线中文在线新版| 青青青免费在线视频| 国产精品午夜一区二区三区| 国产精品久久久久久av公交车| 欧美日一区二区在线观看| 免费观看在线色综合| 成人台湾亚洲精品一区二区| 石原莉奈在线亚洲三区| 欧美三级精品| 欧美私人啪啪vps| 久久先锋影音| 在线亚洲自拍| 亚洲一区二区三区中文字幕在线观看 | 首页国产精品| 久久影院午夜精品| 美腿丝袜在线亚洲一区| 福利一区和二区| 久久久国产精品网站| 久久成人高清| 日韩在线不卡| 午夜在线视频一区二区区别| 日本亚洲欧洲无免费码在线| 国产欧美日韩一区二区三区在线| 国内精品美女在线观看| 国产一区二区三区免费在线| 日韩av不卡一区二区| 国内精品福利| 日本欧洲一区二区| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 国内不卡的一区二区三区中文字幕| 精品一区二区男人吃奶| 精品一区二区三区视频在线播放| 最新亚洲激情| 精品久久一区| 日韩高清在线观看一区二区| 精品久久久久中文字幕小说| 中文一区二区| 中文字幕在线免费观看视频| 国产亚洲精品精品国产亚洲综合| 黄色成人精品网站| 日韩av免费大片| 日韩精品福利一区二区三区| 欧美成人日韩| 天堂av在线| 欧美激情三区| 日精品一区二区三区| 黄色日韩精品| 精品国模一区二区三区| 国产精品.xx视频.xxtv| 日韩中文字幕一区二区三区| 日韩精品中文字幕第1页| 国产探花一区在线观看| 免费日本视频一区| 九色精品91| 欧美亚洲日本精品| 久久永久免费| 国产精品一区二区三区美女| 亚洲深深色噜噜狠狠爱网站| 欧美日韩国产免费观看视频| 国产不卡av一区二区| 国产精品白丝一区二区三区| 午夜电影一区| 国产精品普通话对白| 日韩一区电影| 成人污污视频| 国产乱人伦精品一区| 日本亚洲三级在线| 噜噜噜躁狠狠躁狠狠精品视频| 久久精品国产www456c0m| 另类专区亚洲| 97精品一区| 精品三区视频| 精品一区电影| 久久亚洲黄色| 精品视频在线一区二区在线| 亚洲精品高潮| 亚洲毛片一区| 日韩区一区二| 日韩激情综合| 欧美亚洲二区| 日本午夜精品一区二区三区电影| 热久久免费视频| 视频一区国产视频| 国产亚洲激情| 日韩精品一级二级| 视频在线观看一区| 丝袜美腿一区二区三区| 麻豆亚洲精品| 丝袜美腿亚洲色图| 综合精品一区| 日韩高清三区| 欧美日韩在线精品一区二区三区激情综合| 亚洲欧洲av| 国产欧美日韩亚洲一区二区三区| 欧美精品福利| 久久国产视频网| 国产欧美三级| 欧美精品不卡| 精品国产网站| 午夜av不卡| 久久精品二区三区| 欧美在线资源| 久久亚洲视频| 午夜精品影视国产一区在线麻豆| 综合亚洲色图| 91精品国产自产观看在线 | 日韩福利一区| 久久精品91| 99视频精品免费观看| 免费欧美在线视频| 欧美亚洲三区| 狠狠久久伊人中文字幕| 97人人精品| 伊人精品一区| 妖精视频成人观看www| 日本中文字幕视频一区| 国产精品porn| 欧美日韩免费观看视频| 欧美午夜不卡影院在线观看完整版免费 | 国产欧美日韩一区二区三区在线| 日韩av二区在线播放| 国产精品a级| 中文字幕系列一区| 午夜一级久久| 日本午夜精品视频在线观看| 久久精品资源| 国产综合精品| 婷婷综合电影| 免费精品一区| 国产综合精品| 日本少妇一区二区| 9999国产精品| 老色鬼久久亚洲一区二区| 日本少妇一区二区| 岛国av在线网站| 亚洲国产一区二区三区在线播放| 免费日本视频一区| 久久一区欧美| 欧美日韩精品一本二本三本| 日本一区福利在线| 97精品视频在线看| 在线亚洲国产精品网站| 国产欧美一区二区色老头| 欧美香蕉视频| 亚州av一区| 日韩亚洲一区在线| 亚洲精品在线a| 国产乱码午夜在线视频| 久久亚洲美女| 福利精品一区| 国产手机视频一区二区| 国产精品2区| 国产精品视区| 国产一区二区三区探花| 蜜桃av一区二区| 91亚洲自偷观看高清| 亚洲欧洲日韩| 欧美精品资源| 国产精品男女| 亚洲欧美日韩国产一区| 麻豆国产精品一区二区三区| 国产亚洲精品久久久久婷婷瑜伽| 欧美国产先锋| 中文字幕亚洲在线观看| 国产理论在线| 欧美永久精品| 亚洲欧美日韩高清在线| 久久99影视| 综合亚洲色图|