這篇文章給大家介紹java中怎么利用MongoDB實(shí)現(xiàn)圖片存儲(chǔ)下載功能,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供桃城企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站制作、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為桃城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。1.存圖片
demo:將某個(gè)文件存到mongoDB,這個(gè)file可以通過(guò)前臺(tái)參數(shù)傳入,我這里直接將D://test.png存到mongoDB
@RequestMapping("/addFile")@ResponseBodypublic String addFile(){ MongoClient client = new MongoClient("127.0.0.1",27017); DB db = client.getDB("files"); GridFS fs = new GridFS(db); try { GridFSInputFile gridFSInputFile = fs.createFile(new File("D://test.png")); gridFSInputFile.setFilename("db_test.png"); gridFSInputFile.save(); } catch (IOException e) { e.printStackTrace(); } return "file over";}
執(zhí)行后,可看到圖片已經(jīng)存入成功:
2.下載圖片
需要指定圖片id,可從前端參數(shù)傳入,我這里寫死(上一步存圖片,對(duì)應(yīng)了一個(gè)mongoDB中的files_id):
@RequestMapping("/downFile") public void downFile(HttpServletResponse response){ String fileId = "5c0f7c374fc404123403d69e";//這里可以通過(guò)參數(shù)取代 try { MongoClient client = new MongoClient("127.0.0.1",27017); DB db = client.getDB("files"); GridFS fs = new GridFS(db); GridFSDBFile gridFSDBFile = fs.findOne(new ObjectId(fileId)); OutputStream sos = response.getOutputStream(); response.setContentType("application/octet-stream"); // 獲取原文件名 String name = (String) gridFSDBFile.get("filename"); String fileName = new String(name.getBytes("GBK"), "ISO8859-1"); // 設(shè)置下載文件名 response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); // 向客戶端輸出文件 gridFSDBFile.writeTo(sos); sos.flush(); sos.close(); } catch (IOException e) { e.printStackTrace(); } }
關(guān)于java中怎么利用MongoDB實(shí)現(xiàn)圖片存儲(chǔ)下載功能就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。