将 MongoDB Grids 的方法封装,使用测试类调用里面的方法:
方法的封装:
package com.demo.gridFS;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.bson.Document;
import org.bson.types.ObjectId;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import com.mongodb.client.gridfs.model.GridFSFile;
import com.mongodb.client.gridfs.model.GridFSUploadOptions;
public class GridFSDemo {
MongoClient client;
MongoDatabase db;
GridFSBucket gridFSBucket;
public GridFSDemo() {
//连接服务器
client =(MongoClient) new com.mongodb.MongoClient("localhost", 27017);
//获取数据库
db = client.getDatabase("mydb");
// 创建一个gridFSBucket对象,使用默认名字fs
gridFSBucket = GridFSBuckets.create(db);
}
//------------------------上传文件-------------
public Object saveFile(String url) throws FileNotFoundException {
Object fileid;
InputStream in = new FileInputStream(new File(url));
GridFSUploadOptions options = new GridFSUploadOptions().chunkSizeBytes(358400).
metadata(new Document("type","presentation"));
// 上传
String filename = url.substring(url.lastIndexOf("/")+1);
fileid = gridFSBucket.uploadFromStream(filename,in,options);
return fileid;
}
// -------------------查找文件
public void findFile() {
MongoCursor<GridFSFile>iterator = gridFSBucket.find().iterator();//返回文件为游标类型
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
// ----------根据fileid将数据库中的文件读取到磁盘的指定路径下
public void downFile(String url,ObjectId id) throws IOException {
FileOutputStream out = new FileOutputStream(new File(url));
gridFSBucket.downloadToStream(id, out);
out.close();
}
}
测试类test:
package com.demo.gridFS;
import java.io.FileNotFoundException;
import org.bson.types.ObjectId;
public class TestDemo {
public static void main(String[] args) throws FileNotFoundException {
GridFSDemo test1 = new GridFSDemo();
String url = "";
test1.saveFile(url);
test1.findFile();
test1.downFile(url, id);
}
}