使用pdf.js在线查看pdf文件,如何打开文件名带%百分号的文件?

问题描述

使用pdf.js在线查看pdf文件时,无法打开文件名带有%百分号的文件

问题出现的环境背景及自己尝试过哪些方法

pdfjs-3.5.141-dist

相关代码

<script >
    function openPdf() {
        window.location.href='/js/pdfjs/web/viewer.html?file=/file/子目录/文件名 里面 有 空格和%百分号%.pdf'
    }
</script>

<body>
    <img th:src="@{/images/image.png}" onclick="openPdf()"/>
</body>

你期待的结果是什么?实际看到的错误信息又是什么?

文件名中无空格时可以正常打开,而有空格时无法打开文档
要求是文件名不可以更改

编辑:经过尝试,空格并不影响,真正导致问题的可能是%

阅读 2.1k
2 个回答
✓ 已被采纳

使用 encodeURIComponent 函数对文件名进行转码。

    function openPdf() {
        window.location.href = '/js/pdfjs/web/viewer.html?file=/file/子目录/' + encodeURIComponent('文件名 里面 有 空格.pdf');
    }

字符串 文件名 里面 有 空格.pdf 转码后:
%E6%96%87%E4%BB%B6%E5%90%8D%20%E9%87%8C%E9%9D%A2%20%E6%9C%89%20%E7%A9%BA%E6%A0%BC.pdf

这样在浏览器中打开时,有空格的地方不会被截断。

参考:encodeURIComponent() - JavaScript | MDN

用这个encodeURIComponent:

function openPdf() {
  const fileName = encodeURIComponent("子目录/文件名 里面 有 空格.pdf");
  window.location.href = '/js/pdfjs/web/viewer.html?file=/file/' + fileName;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题