private
final
GridFSBucket gridFSBucket;
private
final
ReactiveGridFsOperations operations;
@ApiOperation("文件上传")
@PostMapping(value = "upload")
public
Mono<String>
upload
(
@RequestPart("file")
FilePart filePart)
{
return
operations.store(filePart.content(), filePart.filename()).map(ObjectId::toHexString);
@ApiOperation("文件预览")
@GetMapping("preview/{id}.*")
public
Mono<Void>
preview
(
@PathVariable
String id, ServerHttpResponse response)
{
return
operations.findOne(Query.query(Criteria.where(
"_id"
).is(id))).map(gridFsFile -> {
GridFSDownloadPublisher
publisher
=
gridFSBucket.downloadToPublisher(gridFsFile.getObjectId());
DataBufferFactory
bufferFactory
=
response.bufferFactory();
response.getHeaders().add(HttpHeaders.CONTENT_DISPOSITION,
"inline;fileName="
+ URLEncoder.encode(gridFsFile.getFilename(), StandardCharsets.UTF_8));
return
response.writeWith(Mono.from(publisher).map(bufferFactory::wrap));
}).flatMap(Function.identity());
复制代码
-
412
-
kfepiza
Spring
Spring Boot
-
654
-
kfepiza
Spring
Spring Boot
-
3480
-
kfepiza
Spring
Spring Boot
-
459
-
kfepiza
Spring
Spring Boot
-
476
-
kfepiza
Spring Boot
Spring
-
847
-
kfepiza
Spring Boot
Spring