我正在向浏览器发送一个保存文件名文件的请求。
文件名可能包含空格,因此我用%20
替换所有空格。
Internet Explorer和Chrome将%20
传回空间,但Firefox不支持。为什么?
有没有办法让所有浏览器显示空间?
这是我的代码:
String codedName = new String(URLEncoder.encode(name, "UTF-8"));
codedName = codedName.replaceAll("\\+", "%20");
response.setHeader("Content-Disposition", "attachment; filename=\"" + codedName+ "\"");
答案 0 :(得分:2)
这取决于您如何创建文件名。通常,您只需在标题字段中设置文件名,框架就会对其进行正确编码。在您的情况下,您似乎将名称编码两次。尝试不编码。
答案 1 :(得分:0)
您可以使用Javascript对网址进行编码。
JavaScript中编码URL的语法是:
encodeURI(uri)
所以,代码是:(注意 my 和 test 之间的空格。)
<script type="text/javascript">
var uri="my test.html?name=jason&age=25";
document.write(encodeURI(uri)+ "<br />");
</script>
结果是:
my%20test.html?name=jason&age=25
根据您最近的评论“如何使用Java进行操作?”
语法如下:
encode(String s)
简单的Google搜索会显示更多信息。