本文主要是介绍window.location.href下载中文名称文件报错,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
导出文件, 当文件是中文的时候, 有时候浏览器会自动转码,导致服务器上找不到这个文件了而报错。
比如:
/home/data/李四.xls 存在与服务器上, 通过window.location.href=file_url后,
/home/data/%E6%9D%8E%E5%9B%9B.xls 浏览器自动转了找不到文件了404
开始以为是前端后台的编码格式不一致导致传输数据过程中变了,就想着用URLcode后台加密前台解密。但最终发现在页面上即使写死一个中文名称文件名也是一样的结果。也尝试了window.open(),最后还是放弃了window.location.href,换了一种写法。
html里面新增一行
<!-- download 是H5的新特点, 没有是点击查看,有点击则是下载-->
<a download href="" id="download_url" style="display: none"></a>
js如下
$("#download_url").attr("href","${context_root}"+res.file_url); // 下载文件地址
$("#download_url").attr("download",res.file_name); // 下载文件名称
document.getElementById("download_url").click(); // 点击
原理是后台生成的英文数字文件名,这样下载是不报错的(包括window.location.href也不报错)。然后把url给a标签的href属性赋值然后模拟点击a标签实现下载,并且重命名了下载后的文件名。
这篇关于window.location.href下载中文名称文件报错的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!