Java SpringBoot2.0.1版本中的GridFSDBFile

Java SpringBoot2.0.1版本中的GridFSDBFile,java,spring,mongodb,maven,spring-boot,Java,Spring,Mongodb,Maven,Spring Boot,我正在尝试将spring boot 1.5.7迁移到其最新版本realease 2.0.1。在旧版本中,我使用此语法来恢复文件 GridFSDBFile gridFsdbFile = gridFsTemplate.findOne(new Query(Criteria.where("_id").is(fileId))); 你知道在新版本中会怎么做吗?我需要 file.setInputStream(gridFsdbFile.getInputStream()); 泰 保持不变的临时解决方案是包含依

我正在尝试将spring boot 1.5.7迁移到其最新版本realease 2.0.1。在旧版本中,我使用此语法来恢复文件

GridFSDBFile gridFsdbFile = gridFsTemplate.findOne(new Query(Criteria.where("_id").is(fileId)));
你知道在新版本中会怎么做吗?我需要

file.setInputStream(gridFsdbFile.getInputStream());

保持不变的临时解决方案是包含依赖项

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.10.11.RELEASE</version>
</dependency>

org.springframework.data

看来,自SpringBoot2.0.xGridFS操作开始转向资源方法

如果GridFS中有唯一的文件名,您可以这样做:

gridFsTemplate.getResource("my-file-name.txt")
GridFSBuckets.create(dbFactory.getDb()).openDownloadStream(gridFsFileId)
在存储文件时,可以使用任意ID代替真实文件名,以确保其唯一性(例如ObjectId)

此外,在2.1.0.M3中还有通过GridFSFile获取资源的with helper方法,但在后台它仍然使用文件名


为了通过纯ID获取文件内容,您可以使用如下方法:

gridFsTemplate.getResource("my-file-name.txt")
GridFSBuckets.create(dbFactory.getDb()).openDownloadStream(gridFsFileId)
然后

您可以像这样在MongoConfiguration中定义gridFSBucket

@Bean public GridFSBucket getGridFSBuckets() {
MongoDatabase db = mongoDbFactory().getDb();
return GridFSBuckets.create(db);
}

如何保存文件,我正在尝试:
ObjectId=gridFsTemplate.store(inputStream,filename,contentType,metaData);返回Mono.just(id.toString()).block()我仅使用
gridFsTemplate.getResource(gridFSFile.getFilename())时出现问题
加载PDF内容,导致文件格式错误:startxref未找到这解决了我的问题,非常感谢
@Bean public GridFSBucket getGridFSBuckets() {
MongoDatabase db = mongoDbFactory().getDb();
return GridFSBuckets.create(db);
}