@SneakyThrows
public void setFilename(HttpServletRequest request, HttpServletResponse response, String filename) {
response.setContentType("application/octet-stream");
String userAgent = request.getHeader("User-Agent");
if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
filename = URLEncoder.encode(filename, "UTF-8");
} else {
filename = new String(filename.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
}
response.setHeader("Content-Disposition", "attachment;filename=" + filename);
}
@SneakyThrows
public static void setFilename(HttpServletRequest request, HttpServletResponse response, String filename) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
String userAgent = request.getHeader("User-Agent");
if (userAgent.contains("MSIE") || userAgent.contains("Trident") || userAgent.contains("PostmanRuntime")) {
filename = URLEncoder.encode(filename, StandardCharsets.UTF_8.toString());
} else {
filename = new String(filename.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
}
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + filename + ";" + "filename*=utf-8''" + filename);
}