@RequestMapping(value = {"admin/download","teacher/download","student/download"})
public void download(Long id, HttpServletResponse response, HttpServletRequest request) throws InterruptedException {
//通过文件id获取文件详情
FileUploadRecord fileUploadRecord = fileUploadRecordService.findById(id);
//获取文件名称
String fileName = fileUploadRecord.getFileName();
try {
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器
} else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
fileName = URLEncoder.encode(fileName, "UTF-8");// IE浏览器
} else if (request.getHeader("User-Agent").toUpperCase().indexOf("CHROME") > 0) {
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");// 谷歌
}
String path = fileUploadRecord.getFileUri();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment;filename="+fileName);
hdfsService.toOutputStream(path, response.getOutputStream());
} catch (FileNotFoundException e) {
logger.warn("hdfs没有此文件:" + fileName);
response.setContentType(null);
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
} catch (IOException e) {
logger.error(e.getMessage());
response.setContentType(null);
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
}
}