@GetMapping("/download/{fileName:.+}")
public ResponseEntity<Resource> downloadFile(@PathVariable String fileName, HttpServletRequest request) {
Resource resource = storageService.loadFileAsResource(fileName);
String contentType;
ResponseEntity<Resource> body = null;
try{
contentType = request.getServletContext().getMimeType(resource.getFile().getAbsolutePath());
if (contentType == null){
contentType = "application/octet-stream";
}
body = ResponseEntity.ok().contentType(MediaType.parseMediaType(contentType))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + URLEncoder.encode(Objects.requireNonNull(resource.getFilename()), "UTF-8"))
.body(resource);
}catch (IOException ex){
logger.info("Could not determine file type");
ex.printStackTrace();
}
return body;
}
/**
* ResponseEntity图片预览
*
* @return
* @throws Exception
*/
@GetMapping("/preview/{fileName:.+}")
public ResponseEntity<Resource> responseEntityView(@PathVariable String fileName){
WsslFileS storage = fileService.getEntityByKey(fileName);
if (fileName == null) {
return ResponseEntity.notFound().build();
}
if (fileName.contains("../")) {
return ResponseEntity.badRequest().build();
}
String type = storage.getFileType();
MediaType mediaType = MediaType.parseMediaType(type);
Resource file = storageService.loadFileAsResource(fileName);
if (file == null) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok().contentType(mediaType).body(file);
}