Java SpringBoot2.0.1版本中的GridFSDBFile
我正在尝试将spring boot 1.5.7迁移到其最新版本realease 2.0.1。在旧版本中,我使用此语法来恢复文件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()); 泰 保持不变的临时解决方案是包含依
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);
}