文件上传下载

132 阅读1分钟

后端给到前端的文件,如果想直接下载的话,要设置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。导致浏览器无法识别,还是下载图片