背景:在此基础上进行springboot整合mongodb(二)
下载、删除mongdb中文件
一、FileController添加API接口
@GetMapping("/file/{id}")
public ResponseEntity download(@PathVariable("id") String id, HttpServletResponse response) {
try {
if (fileService.download(id, response.getOutputStream())) {
response.flushBuffer();
return new ResponseEntity("success", HttpStatus.OK);
}
} catch (IOException e) {
LOGGER.error("FileController.download.IOException: " + e.getMessage());
}
return new ResponseEntity("fail", HttpStatus.INTERNAL_SERVER_ERROR);
}
@GetMapping("/file2/{id}")
public ResponseEntity download2(@PathVariable("id") String id, HttpServletResponse response) {
try {
OutputStream os = response.getOutputStream();
String fileName = fileService.download2(id, os);
if (fileName != null) {
return new ResponseEntity("success", HttpStatus.OK);
}
} catch (IOException e) {
LOGGER.error("FileController.download2.IOException: " + e.getMessage());
}
return new ResponseEntity("fail", HttpStatus.INTERNAL_SERVER_ERROR);
}
@DeleteMapping("/file/{id}")
public ResponseEntity delete(@PathVariable("id") String id) {
if (!fileService.deleteById(id)) {
return new ResponseEntity("fail", HttpStatus.INTERNAL_SERVER_ERROR);
}
return new ResponseEntity("success", HttpStatus.OK);
}
二、FileService中创建对应的方法
boolean deleteById(String id);
boolean download(String id, OutputStream os);
String download2(String id, OutputStream os);
三、FileServiceImpl增加具体实现
@Override
public boolean download(String id, OutputStream os) {
return fileDao.download(id, os);
}
@Override
public String download2(String id, OutputStream os) {
return fileDao.download2(id, os);
}
@Override
public boolean deleteById(String id) {
return fileDao.deleteById(id);
}
四、FileDao添加数据处理方法
public boolean deleteById(String id) {
try {
gridFsTemplate.delete(Query.query(Criteria.where("_id").is(id)));
return true;
} catch (Exception e) {
LOGGER.error("FileDao.deleteById.Exception: " + e.getMessage());
}
return false;
}
public boolean download(String id, OutputStream os) {
try{
// 根据id查询文件
GridFSFile gridFSFile = gridFsTemplate.findOne(Query.query(Criteria.where("_id").is(id)));
// 下载
gridFSBucket.downloadToStream(gridFSFile.