超链接的href路径中包含特殊符号和中文,在点击后,文件下载失败,提示404。


查看了请求的路径,发现从#号后面的部分被浏览器自动截掉了,所以文件是不存在的。
解决方法是把文件名称编码后再请求:
初始写法:
{PATH}为文件的路径。
修改后的写法:
FileNameEncode方法:
- //对文件名称进行转义(处理中文或特殊符号无法下载问题)
- function FileNameEncode(filePath,obj) {
- var index = filePath.lastIndexOf("\/");
- fileName = filePath.substring(index + 1, filePath.length);//文件名称
- var codeName = encodeURIComponent(fileName);//转义后的文件名
-
-
- var index1 = filePath.lastIndexOf("\/");
- filePathNotFileName = filePath.substring(0, index + 1);//除文件名称外的部分
-
- var fullPath = filePathNotFileName + codeName;//文件名称转义后的完整文件路径
-
- $(obj).attr("href", fullPath);//设置下载的超链接href属性值
- }
处理的思路就是拿到完整的请求路径,然后找到文件名称部分(最后一个斜杠后面的部分),将文件名称通过encodeURIComponent方法进行编码,然后把编码后的文件名称替换到原来的路径中。