原因:下载文件时,Ajax传递的文件名中含有特殊字符(比如:aa++.txt),+传递到后台后就被处理成了空字符(' ')。所以类似的特殊字符需要传递前进行转义处理。用encodeURIComponent将特殊字符包裹转义后即可正常传递。
参考:51job地址
统一处理:
jsonData= {number: 1, filename: encodeURIComponent(file.name)};
单一处理:
如果将特殊字符进行字符串替换。比如+,它的转以后为 %2B,因为可以写作:
file.name.replace(/\+/g,'%2B')