这是我上传前的配置
headers: {
'Content-Disposition': 'attachment; filename="' + encodeURIComponent(file.name) + '"; filename*=' + encodeURIComponent(file.name),
},
/** * 浏览器下载文件时需要在服务端给出下载的文件名,当文件名是ASCII字符时没有问题当文件名有非ASCII字符时就有可能出现乱码 * 最终设置的response header是这样: * Content-Disposition: attachment; * filename="encoded_text"; * filename*=utf-8''encoded_text * 其中encoded_text是经过RFC 3986的“百分号URL编码”规则处理过的文件名 / public static void setFileDownloadHeader(HttpServletResponse response, String filename) { String headerValue = "attachment;"; headerValue += " filename="" + encodeURIComponent(filename) +"";"; headerValue += " filename=utf-8''" + encodeURIComponent(filename); response.setHeader("Content-Disposition", headerValue); }
/** * 符合 RFC 3986 标准的“百分号URL编码”在这个方法里,空格会被编码成%20,而不是+和浏览器的encodeURIComponent行为一致 */ public static String encodeURIComponent(String value) { try { return URLEncoder.encode(value, "UTF-8").replaceAll("\+", "%20"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return null; }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。