开发者社区> 问答> 正文

web端上传oss文件 safari下载文件乱码

这是我上传前的配置

headers: {
 'Content-Disposition': 'attachment; filename="' + encodeURIComponent(file.name) + '"; filename*=' + encodeURIComponent(file.name), 
},

image.png

展开
收起
文杰文杰 2019-12-12 19:35:43 13295 0
1 条回答
写回答
取消 提交回答
  • /** * 浏览器下载文件时需要在服务端给出下载的文件名,当文件名是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; }

    2021-02-26 14:56:50
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Web应用系统性能优化 立即下载
高性能Web架构之缓存体系 立即下载
PWA:移动Web的现在与未来 立即下载