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

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

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

瀏覽:147日期: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工具包食用更佳?。。?/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 { // 校驗文件信息(文件類型,文件內容) 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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产美女亚洲精品7777| 激情中国色综合| 日韩成人精品一区| 欧美激情麻豆| av中文字幕在线观看第一页 | 欧美日韩激情| 九色精品91| 伊人久久成人| 日韩精品一区第一页| 亚洲乱亚洲高清| 欧美日本久久| 国产极品模特精品一二| 国产一区一一区高清不卡| 久久精品国产网站| 91欧美国产| 五月婷婷亚洲| 男女男精品网站| 国产精品一区二区av交换 | 欧美激情三区| 亚洲成人二区| 免费在线观看成人| 国产精品亚洲成在人线| 国产中文字幕一区二区三区| 激情五月综合| 日韩精品国产欧美| 麻豆精品av| 91精品二区| 伊人国产精品| 里番精品3d一二三区| 亚洲精品在线影院| 亚洲一级淫片| 日本久久综合| 丝瓜av网站精品一区二区| 麻豆一区二区三区| 一级欧洲+日本+国产| 欧美亚洲国产日韩| 99久久夜色精品国产亚洲1000部| 日韩国产在线不卡视频| 色黄视频在线观看| 婷婷亚洲精品| 四虎884aa成人精品最新| 蜜桃一区二区三区在线| 国产日韩一区| 国内亚洲精品| 国产精品一区免费在线| 99精品99| 欧美激情国产在线| 日韩精品一级| 九一国产精品| 色婷婷综合网| 97久久超碰| 欧美日韩国产探花| 精品国产精品久久一区免费式| 亚洲综合另类| 中文在线а√天堂| 日本精品另类| 99在线精品视频在线观看| 国产精品香蕉| 免费视频最近日韩| 亚洲爱爱视频| 老司机精品在线| 亚洲精品系列| 亚洲男女av一区二区| av在线资源| 美女视频黄久久| 天堂av一区| 欧美中文字幕| 久久久夜夜夜| 精品国产午夜肉伦伦影院| 日韩成人在线看| 久热re这里精品视频在线6| 天堂√8在线中文| 欧美欧美黄在线二区| 久久国产成人| 欧美日韩视频| 欧美中文一区二区| 亚洲黄色免费看| 麻豆国产欧美一区二区三区 | 国产精品99久久精品| 日韩不卡免费视频| 首页亚洲欧美制服丝腿| 亚洲欧美综合| 韩国三级一区| 日本免费久久| sm久久捆绑调教精品一区| 欧美亚洲专区| 亚洲乱码视频| 亚洲欧洲专区| 蜜桃av一区二区三区电影| 欧美日韩国产传媒| 女人av一区| 1024精品久久久久久久久| 久久中文字幕二区| 精品国产18久久久久久二百| 国产欧美69| 国产精品三p一区二区| 日韩视频1区| 蜜臀久久久久久久| 亚洲中字黄色| 蜜臀av亚洲一区中文字幕| 久久久五月天| 亚洲午夜精品久久久久久app| 91精品在线观看国产| 久久九九国产| 欧美日韩国产综合网| 天堂网在线观看国产精品| 在线日韩视频| 欧美特黄一区| 国产一区二区精品| 国产亚洲永久域名| 美女久久一区| 一区二区电影| 日韩va亚洲va欧美va久久| 国产丝袜一区| 精品一区电影| 国产精品中文字幕亚洲欧美| 国产精品一区三区在线观看| 国产精品入口久久| 精品国产欧美日韩| 精品国产成人| 久久人人97超碰国产公开结果| 成人日韩在线| 91成人网在线观看| 综合在线一区| 国产精品欧美一区二区三区不卡 | 精品免费av在线| 欧美午夜不卡影院在线观看完整版免费| 黑人精品一区| 欧美日韩国产传媒| 日韩视频一二区| 久久亚州av| 亚洲国内欧美| 色婷婷成人网| 国内精品美女在线观看| 香蕉久久99| 中文字幕日韩欧美精品高清在线| 青青在线精品| 97人人精品| 久久影院一区| 蜜桃久久久久久久| 欧美黄色一区| 99久久亚洲精品蜜臀| 9色精品在线| 日韩精品视频在线看| 日韩不卡一区| 免费久久99精品国产| 国产一区一一区高清不卡| 国产在线成人| 婷婷综合福利| 麻豆mv在线观看| 亚洲综合婷婷| 美女视频黄 久久| 亚洲欧洲一区二区天堂久久| 天堂精品久久久久| 日韩欧美综合| 日韩1区2区日韩1区2区| 福利视频一区| 狠狠干综合网| 国产精品网址| 亚洲激情婷婷| 国产精品啊v在线| 黄色不卡一区| 欧美黄页在线免费观看| 夜久久久久久| 精品视频国内| 视频一区二区欧美| 亚洲黄色免费看| 青青国产91久久久久久| 91精品一区国产高清在线gif| 日韩欧美在线精品| 欧美日韩精品免费观看视欧美高清免费大片 | 亚洲欧美久久| 牛牛精品成人免费视频| 另类av一区二区| 福利一区二区三区视频在线观看| 日本v片在线高清不卡在线观看| 电影亚洲精品噜噜在线观看| 国产精品美女午夜爽爽| 亚洲欧美日韩国产| 91精品国产91久久久久久黑人| 日韩欧美久久| 亚洲在线国产日韩欧美| 日韩电影二区| 欧美精品二区| 亚洲综合激情在线| 精品欧美久久| 中文字幕在线视频久| 国产乱码精品| 亚洲三级国产| 红桃视频国产一区| 日韩av二区| 欧美一区久久| 亚洲免费播放| 夜鲁夜鲁夜鲁视频在线播放| 国产精品红桃| 在线精品一区| 精品捆绑调教一区二区三区| 国产精品66| 国产欧美日韩视频在线 | 久久av导航|