java操作mongodb

package cn.vant.mongo;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.data.document.mongodb.MongoTemplate;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBObject;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;
/**
* Mongodb對文件的操作
*
* @author zhang.ai.jun
*
*/
public class MongoFileUtils {
/**
* 寫入文件
* @param mongoTemplate 公共調用函數模板
* @param file 文件
* @param fileid 文件id
* @param companyid 文件的公司id
* @param filename 文件名稱
* @date 2018-3-8 下午02:20:41
*/
public void SaveFile(MongoTemplate mongoTemplate, File file, String fileid, String companyid, String filename) {
try {
InputStream input = new FileInputStream(file);
DB db = mongoTemplate.getDb();
GridFS gridFS = new GridFS(db, "fs");
GridFSInputFile gfs = gridFS.createFile(input);
gfs.put("aliases", companyid);
gfs.put("fileid", fileid);
gfs.put("filename", filename);
gfs.put("path",file.getPath());
gfs.save();
input.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("存儲文件時發生錯誤!!!");
}
}
/**
* 文件的讀取功能
* @Title: MongoFileUtils.java
* @param mongoTemplate 公共調用函數模板
* @param fileid 文件id
* @param filePath 輸出文件路徑
* @Package cn.vant.mongo
* @date 2018-3-8 下午04:43:45
* @version V1.0
*/
public void loadFileOne(MongoTemplate mongoTemplate,String fileid,String filePath){
try{
DBObject employees = new BasicDBObject();
DB db = mongoTemplate.getDb();
GridFS gridFS = new GridFS(db, "fs");
employees = gridFS.findOne(fileid);
byte[] files = (byte[]) employees.get("member");
ByteArrayInputStream input = new ByteArrayInputStream(files);
File f = new File(filePath);
FileOutputStream output = new FileOutputStream(f);
byte[] b=new byte[input.available()];
while (input.read(b)>0) {
input.read(b);
output.write(files);
}
input.close();
output.close();
}catch (Exception e) {
e.printStackTrace();
}
}
/**
* 取出文件到本地
* @Title: MongoFileUtils.java
* @Package cn.vant.mongo
* @date 2018-3-8 下午02:21:41
* @version V1.0
*/
public void retrieveFileOne(MongoTemplate mongoTemplate,String fileid,String filePath) {
try{
DB db = mongoTemplate.getDb();
GridFS gridFS = new GridFS(db, "fs");
//查詢的結果:
GridFSDBFile gridDBFile =gridFS.findOne(fileid);
String fileName=(String)gridDBFile.get("filename");
System.out.println("從Mongodb獲得文件名爲:"+fileName);
File writeFile=new File(filePath+fileName);
if(!writeFile.exists()){
writeFile.createNewFile();
}
//把數據寫入磁盤中
//寫入文件中
gridDBFile.writeTo(writeFile);
}catch (Exception e) {
e.printStackTrace();
}
}
/**
* 查詢文件列表
* @Title: MongoFileUtils.java
* @Package cn.vant.mongo * @date 2018-3-8 下午06:25:31
* @version V1.0
*/
public List<GridFSDBFile> fileList(MongoTemplate mongoTemplate,Map map){
DB db = mongoTemplate.getDb();
GridFS gridFS = new GridFS(db);
// 查找條件
DBObject query = new BasicDBObject();
String fileid = map.get("fileid").toString();
String filename = map.get("filename").toString();
String collection = map.get("collection").toString();
String contentType = map.get("contentType").toString();
if (fileid != null) {
query.put("fileid", fileid);
}
if (filename != null) {
query.put("filename", filename);
}
if (collection != null) {
query.put("collection", collection);
}
if (contentType != null) {
query.put("contentType", contentType);
}
//查詢的結果:
List<GridFSDBFile> listFile =gridFS.find(fileid);
return listFile;
}
/**
* mongodb服務器下載文件
* @Title: MongoFileUtils.java
* @Package cn.vant.mongo
* @date 2018-3-8 下午06:09:39
* @version V1.0
*/
public void downloadFile(MongoTemplate mongoTemplate,String fileid,HttpServletRequest req, HttpServletResponse res) {
try {
String appDir = req.getParameter("appDir");
String filename = req.getParameter("filename");
System.out.println("打印參數:appDir=" + appDir + ",filename=" + filename);
DB db = mongoTemplate.getDb();
GridFS gridFS = new GridFS(db, "fs");
GridFSDBFile gridFSDBFile = (GridFSDBFile)gridFS.findOne(fileid);
if (gridFSDBFile != null){
OutputStream sos = res.getOutputStream();
res.setCharacterEncoding("UTF-8");
res.setHeader("Access-Control-Allow-Origin", "*");
res.setContentType("application/octet-stream");
res.addHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
gridFSDBFile.writeTo(sos);
sos.flush();
sos.close();
}
}catch (Exception e) {
System.out.println("下載文件異常 ...");
e.printStackTrace();
}
}
/**
* 刪除文檔
* @Title: MongoFileUtils.java
* @Package cn.vant.mongo
* @date 2018-3-8 下午05:20:11
* @version V1.0
*/
public void deleteFileOne(MongoTemplate mongoTemplate,String fileid){
DB db = mongoTemplate.getDb();
GridFS gridFS = new GridFS(db, "File");
gridFS.remove(fileid);
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章