使用 java 的文件下载,可以避免 ie 浏览器不兼容的问题,最常见的问题就是 比如本地保存文件名,使用的是 32 位的 uuid ,
数据库保存的真正的文件名和文件路径,那么,ie 的 js 不支持 download 属性,就无法自定义下载时的文件名。
var href="${base}/download.action"+
"?filePath="+encodeURIComponent($("#filePath").val())+
"&realFileName="+encodeURIComponent($("#fileName").val())";
// filePath 文件下载地址 url
// realFileName 实际文件名 (不是 32 位uuid)
@RequestMapping(value = "/download")
public ResponseEntity<byte[]> downloadfile(HttpServletRequest request,
String filePath, String realFileName) throws IOException {
realFileName = URLDecoder.decode(realFileName, "utf-8");
String webPath = Platform.getInstance().getGlobal().get("attachPath"); // 文件本地路径,config.xml 里取出
filePath = webPath + File.separator + filePath;
filePath = org.springframework.util.StringUtils.cleanPath(filePath);
File file = new File(filePath);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
realFileName = URLEncoder.encode(realFileName, "UTF-8");
headers.setContentDispositionFormData("attachment", realFileName);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
headers, HttpStatus.OK);
}