girdFSは写真を保存し、ハードディスクに写真を保存する
2161 ワード
girdFSノートを勉強して、主にgirdFSは写真をMongoDB・に保存して、写真をハードディスクに保存します
0,GridFSBucket構成クラス、ダウンロードストリームオブジェクトを開く
1、写真を保存
2、ダウンロード画像
0,GridFSBucket構成クラス、ダウンロードストリームオブジェクトを開く
@Configuration
public class MongoConfig {
@Value("${spring.data.mongodb.database}")
String db;
@Bean
public GridFSBucket getGridFSBucket(MongoClient mongoClient){
MongoDatabase database = mongoClient.getDatabase(db);
GridFSBucket bucket = GridFSBuckets.create(database);
return bucket;
}
}
1、写真を保存
@Autowired
GridFsTemplate gridFsTemplate;
@Autowired
GridFSBucket gridFSBucket;
@Test
public void addImage() {
try {
//
File file = new File("E:\\360Downloads\\1.jpg");
//
FileInputStream inputStram = new FileInputStream(file);
// GridFS
ObjectId objectId = gridFsTemplate.store(inputStram, "img ");
// ID
String fileId = objectId.toString();
System.out.println(fileId);//5d7e000fd3e38128a8481c4f
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
2、ダウンロード画像
@Test
public void getImg() throws IOException {
// id
String fileId = "5d7e000fd3e38128a8481c4f";
//
GridFSFile gridFSFile = gridFsTemplate.findOne(query(Criteria.where("_id").is(fileId)));
// ( 1)
GridFSDownloadStream gridFSDownloadStream = gridFSBucket.openDownloadStream(gridFSFile.getObjectId());
// gridFsResource,
GridFsResource gridFsResource = new GridFsResource(gridFSFile, gridFSDownloadStream);
/** ( 2)
GridFsResource resource = gridFsTemplate.getResource(gridFSFile);*/
//
InputStream fis = gridFsResource.getInputStream();
//
FileOutputStream fos=new FileOutputStream("d:\\4.jpg");
byte[] bytes=new byte[1024];
int len=0;
while ((len=fis.read(bytes))!=-1){
fos.write(bytes,0,len);
}
fos.close();
fis.close();
}