标题翻译成英文是这样的:Load a pdf with a chinese filename from url ,在使用itext生成pdf之后,在后台将生成的中文名称的pdf放在webroot下的download文件夹内,使用ajax返回,在success方法内,写上打开改路径文件的方法,如下:
<script type="text/javascript">
function downloadWagePdf(){
var usekey="<%=session.getAttribute("USERID")%>";
var pdfFilePath = "<%=basePath%>" + "WebRoot\\download\\"
+ "测试" + ".xls";
window.open(pdfFilePath);
</script>
很不幸的是这种方式,打开中文的话,会遇到乱码,如图:
网上搜了一下window.open方法中文乱码的关键字,大多数都是针对传递的参数是中文的情况,并没有说如果是中文名的文件名乱码问题如何解决,也试了一些编码的格式方法,都么有,原因是因为js默认的是iso-8895的格式,无法识别中文,
*************所以我用了一个折中的方法,在点击下载pdf的按钮上面,增加一个隐藏的a标签,通过a标签的download属性,修改为中文名称,这是内部已经实现了的,可以识别中文,可以参考如下网址:http://blog.csdn.net/leytton/article/details/38545299 ,如下完整代码:
<a id="dlink" style="display:none;"></a>
<li style="text-align:left">οnclick="downloadWagePdf();">
<i class="icon-upload-alt" style='cursor:pointer'> 导出</i>
</p></li>
以下是使用a标签的属性,修改跳转的属性,下载文件,不适用window.open()方法:
<script type="text/javascript">
function downloadWagePdf(){
// var usekey="<%=session.getAttribute("USERID")%>";
var pdfFilePath = "<%=basePath%>" + "WebRoot\\download\\"
+ "bank_wage" + ".xls";
// window.open(pdfFilePath);
var titleDate= new Date().Format("yyyy-MM-dd hh-mm-ss");
document.getElementById("dlink").href = pdfFilePath;
document.getElementById("dlink").download = "银行流水报表"+titleDate+".xls";
document.getElementById("dlink").click();
}
</script>
这样就可以避免中文名称的文件,打开是乱码