java+MongoDB實現(xiàn)存圖片、下載圖片的方法示例
本文實例講述了java+MongoDB實現(xiàn)存圖片、下載圖片的方法。分享給大家供大家參考,具體如下:
1.存圖片
demo:將某個文件存到mongoDB,這個file可以通過前臺參數(shù)傳入,我這里直接將D://test.png存到mongoDB
@RequestMapping("/addFile")
@ResponseBody
public 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ù)傳入,我這里寫死(上一步存圖片,對應(yīng)了一個mongoDB中的files_id):
@RequestMapping("/downFile")
public void downFile(HttpServletResponse response){
String fileId = "5c0f7c374fc404123403d69e";//這里可以通過參數(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();
}
}
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java圖片操作技巧匯總》、《java日期與時間操作技巧匯總》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》及《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》。
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
Servlet實現(xiàn)統(tǒng)計頁面訪問次數(shù)功能
這篇文章主要介紹了Servlet實現(xiàn)統(tǒng)計頁面訪問次數(shù)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-04-04
bool當(dāng)成函數(shù)參數(shù)錯誤理解
經(jīng)常會在函數(shù)的參數(shù)里使用bool參數(shù),這會大大地降低代碼的可讀性2012-11-11
Spring Core動態(tài)代理的實現(xiàn)代碼
通過JDK的Proxy方式或者CGLIB方式生成代理對象的時候,相關(guān)的攔截器已經(jīng)配置到代理對象中去了,接下來通過本文給大家介紹Spring Core動態(tài)代理的相關(guān)知識,需要的朋友可以參考下2021-10-10
Java使用ArrayList實現(xiàn)撲克牌的示例代碼
學(xué)習(xí)了關(guān)于集合類的知識,我們可以做一個小項目來加深對集合類知識的學(xué)習(xí)!本文就來利用ArrayList實現(xiàn)撲克牌發(fā)牌洗牌效果,需要的可以參考一下2022-10-10
springboot熱部署class XX cannot be cast&nbs
在使用DevTools進(jìn)行熱加載時遇到的`classXXcannotbecasttoclassXX`錯誤,以及解決該問題的方法,通過在`resources`目錄下創(chuàng)建`META-INF/spring-devtools.properties`文件,并添加相應(yīng)的配置,可以有效解決此問題,使DevTools熱加載功能得以正常工作2025-02-02
java 分轉(zhuǎn)元與元轉(zhuǎn)分實現(xiàn)操作
這篇文章主要介紹了java 分轉(zhuǎn)元與元轉(zhuǎn)分實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02

