把文件保存到S3对应的路径:
@PostMapping(value = "uploadFile")
public ResultUtil uploadFeedBack(MultipartHttpServletRequest request) {
ResultUtil result = new ResultUtil();
try {
MultipartHttpServletRequest multipartRequest = request;
SysUserFeedBackEntity userFeedBackEntity = new SysUserFeedBackEntity();
//userFeedBackEntity 这个entity包含了页面的其他需要保存到数据的点,对于获取到file //multipartRequest.getFile("uploadFile0");
userFeedBackEntity.setCategoryId(Integer.valueOf(request.getParameter("categoryId")));
userFeedBackEntity.setDescription(request.getParameter("description"));
userFeedBackEntity.setStatus(Integer.valueOf(request.getParameter("status")));
userFeedBackEntity.setCreateId(request.getParameter("createId"));
userFeedBackEntity.setUpdateId(request.getParameter("updateId"));
MultipartFile clientFile0 = multipartRequest.getFile("uploadFile0");
List uploadFiles = new ArrayList<>();
uploadFiles.add(clientFile0);
sysUserFeedBackService.insertUserFeedBackRecord(userFeedBackEntity, uploadFiles);
return result.success(1);
} catch (IOException e) {
e.printStackTrace();
return result.error("Failed to save user feedback");
}
}
@Override public int insertUserFeedBackRecord(SysUserFeedBackEntity record, ListuploadFiles) throws IOException { logger.info(" insert record into the table"); sysUserFeedBackMapper.insertUserFeedBack(record); for (MultipartFile uploadFile : uploadFiles) { MultipartFile aa = uploadFile; if (!aa.getOriginalFilename().equals("null")){ // 这边前端进行压缩的时候有判断,如果没有上传文件,就把名字置为null 所以这边判断如果不上null 才会上传 int fb_id = sysUserFeedBackMapper.getFBId(record.getSubject(), record.getCreateId()); logger.info(" get the fb_id {} after insert ", fb_id); record.setFbId(fb_id); logger.info(" insert attachments records into the attachments table"); if (uploadFile != null) { record.setFbFileName(aa.getOriginalFilename()); insertRecordIntodocument(record, uploadFile.getBytes());//上传字节流 并把对应的路径等信息保存到table } }else{ logger.info("not upload file"); } } return 1; }
@GetMapping("/downloadFiles")
public void downloadFiles(@RequestParam int fbId, HttpServletResponse response) throws IOException {
HashMap fileInfos = sysUserFeedBackService.downloadFiles(fbId);// 下载对应的字节流文件
for (String key : fileInfos.keySet()) {
// reset response
response.reset();
response.setHeader("Content-Disposition", "attachment; filename=" + key);
response.setContentType("application/octet-stream; charset=utf-8") ;
response.setCharacterEncoding("UTF-8");
OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
byte[] bytes = fileInfos.get(key);
outputStream.write(bytes);
outputStream.close();
}
}
对应前端代码:
v-if="scope.row.fbFileName!=null" // 如果没有下载文件就不显示下载链接 type="primary" @click="downloadFile(scope.row)" >download
>
downloadFile(row) {
window.location.href =
"/midmetric/userFeedBack/downloadFiles?fbId=" + row.fbId;
},



