后端给到前端的文件,如果想直接下载的话,要设置ContentType
这样是在前端点链接, 直接下载文件
response.setContentType("application/octet-stream");//设置文件类型
String filePath=""
File file=new File(filePath);
//解决乱码问题
String filename=URLEncoder.encode(file.getName(),"utf-8");
//重置输出流
response.reset();
// 这个必须加
Response.AddHeader("Content-Disposition", "attachment;filename="+filename);//设置文件名
response.addHeader("Content-Length",file.length);//设置下载文件大小
response.setContentType("application/octet-stream");//设置文件类型
如果要让图片在新窗口打开,而不是下载时,需要设置
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "filename="
+ new String(fileName.getBytes(StandardCharsets.UTF_8), "ISO8859-1"));
这两个的区别在于 attachment, 如果不设置这个, 只设置了contentType,会导致contentType后面加上charset: utf_8。导致浏览器无法识别,还是下载图片