超链接下载文件包含特殊符号和中文的处理

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

查看了请求的路径,发现从#号后面的部分被浏览器自动截掉了,所以文件是不存在的。 

解决方法是把文件名称编码后再请求:

初始写法:

<a href="{PATH}" target="_blank" style="color:#3F679E;text-decoration:none">下载</a>

{PATH}为文件的路径。

修改后的写法:

 <a href="javascript:void(0)"  οnclick="FileNameEncode('{PATH}',this)"  target="_blank" style="color:#3F679E;text-decoration:none">下载</a>

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方法进行编码,然后把编码后的文件名称替换到原来的路径中。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值