private File readGridFSByFaceId(String faceId) throws Exception {
GridFSFindIterable gridFSFiles
= gridFSBucket.find(Filters.eq("_id", new ObjectId(faceId)));
GridFSFile gridFS = gridFSFiles.first();
if (gridFS == null) {
GraceException.display(ResponseStatusEnum.FILE_NOT_EXIST_ERROR);
}
String fileName = gridFS.getFilename();
System.out.println(fileName);
// 获取文件流,保存文件到本地或者服务器的临时目录
File fileTemp = new File("/workspace/temp_face");
if (!fileTemp.exists()) {
fileTemp.mkdirs();
}
File myFile = new File("/workspace/temp_face/" + fileName);
// 创建文件输出流
OutputStream os = new FileOutputStream(myFile);
// 下载到服务器或者本地
gridFSBucket.downloadToStream(new ObjectId(faceId), os);
return myFile;
}
查看图像的这个方法会先把文件保存到本地,然后在返回文件。那如果多次查看图像的话岂不是会下载多次相同文件
一课收获分布式系统开发,微服务核心技术和中间件企业生产落地
了解课程