问题
之前提到过以GridFS方式上传问题到MongoDB中:。现在需要从Mongodb中读取文件,应该怎么处理类?
解决
Maven
org.springframework.data spring-data-mongodb 2.0.5.RELEASE
注解mongoDbFactory
@Autowiredprivate MongoDbFactory mongoDbFactory;
获取文件流
String fileId = "5602de6e5d8bba0d6f2e45e4";// 从Mongod中查找出一个文件,注意这里返回为com.mongodb.client.gridfs.model.GridFSFile类GridFSFile gridFsdbFile = operations.findOne(new Query(Criteria.where("_id").is(fileId)));if (gridFsdbFile != null) { // mongo-java-driver3.x以上的版本就变成了这种方式获取 GridFSBucket bucket = GridFSBuckets.create(mongoDbFactory.getDb()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 获取Mongodb中文件的缓存输出流 bucket.downloadToStream(gridFsdbFile.getId(), baos); ...}
**Note:**其中operations
为里面的GridFsOperations类为org.springframework.data.mongodb.gridfs.GridFsOperations
;其中GridFSFile
为com.mongodb.client.gridfs.model.GridFSFile
类。 获取到输出流,到这里之后就是Java流操作的事情了。
总结
spring-data-mongodb从2.0版本开始,其中方法,返回类型为com.mongodb.client.gridfs.model.GridFSFile
,不是再为com.mongodb.gridfs.GridFSDBFile
类型。所以,这里就不得不用GridFSBucket
来获取文件。
参考: