文件上传
@ApiOperation(value = "上传文件",notes = "上传文件")
@RequestMapping(value = "/file/upload",method = RequestMethod.POST)
public Object upload(@RequestParam("file") MultipartFile multiportFile, HttpServletRequest request) throws Exception {
// 获得提交的文件名
String fileName = multiportFile.getOriginalFilename();
// 获得文件输入流
InputStream ins = multiportFile.getInputStream();
// 获得文件类型
String contentType = multiportFile.getContentType();
// 将文件存储到mongodb中,mongodb 将会返回这个文件的具体信息
GridFSFile objectId = gridFsTemplate.store(ins, fileName, contentType);
return objectId;
}
文件下载
@ApiOperation(value = "下载文件",notes = "下载文件")
@RequestMapping(value = "download/{fileName}",method = RequestMethod.GET)
public String download(@PathVariable @ApiParam(value = "文件名")String fileName,
HttpServletRequest request, HttpServletResponse response) throws Exception {
Query query = Query.query(Criteria.where("filename").is(fileName));
ModelEvaluationContextReport report = this.reportMongoTemplate.findOne(query,ModelEvaluationContextReport.class);
if (report == null) {
throw new Exception("文件不存在");
}
String fileName = report.getFileName();
//处理中文文件名乱码
if (request.getHeader("User-Agent").toUpperCase().contains("MSIE") ||
request.getHeader("User-Agent").toUpperCase().contains("TRIDENT")
|| request.getHeader("User-Agent").toUpperCase().contains("EDGE")) {
fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
} else {
//非IE浏览器的处理:
fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
}
// 通知浏览器进行文件下载
response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
String base64 = report.getBase64().replace("\r","").replace("\n","");
byte[] buffer = Base64Utils.decodeFromString(base64);
OutputStream os = response.getOutputStream();
os.write(buffer);
os.flush();
os.close();
return "success";
}