我的公司有一个内部网络来共享数字蓝图和文档,但它有一个问题:超链接无法通过点击下载文档,而IT人员又懒得修复它,所以我写了一个脚本来帮助我的工作经验。
然后发生了奇怪的事情,通过单击我添加了
download
属性的超链接下载时,一些文件(我没有找到为什么有些文件可以工作而有些不能工作的线索)被损坏。但是,如果您右键单击该文件,然后选择 save link as...
,则下载的文件就可以了。
具有
download
属性的链接和右键单击链接然后按 save as
会导致结果不同吗?
值得注意的是
.pdf
文档有数字签名(不确定是否相关)。
我的脚本的伪代码:
//Iterate all <a> element that do not class "dl-added"
if (looks like document link) {
link.setAttribute("download", "")
link.classList.add("dl-added)
}
没有我的脚本,文件链接元素看起来像这样:
<a href="http://cdn.company-name.com:5000/upload/1234-5678-abcd/name-of-doc%20%A2%BC%D2%E9%78%90.pdf">name</a>
就像我的脚本一样:
<a href="http://cdn.company-name.com:5000/upload/1234-5678-abcd/name-of-doc%20%A2%BC%D2%E9%78%90.pdf" download class="dl-added">name</a>
右键单击并
save as
下载好的pdf文件的二进制内容如下所示:
%PDF-1.7..%;sÅx..1 0 obj
......
startxref..661568..%%EOF..
“损坏”的文件如下所示:
%PDF-1.7..%;sÅx..1 0 obj
......
uÛ±1LFIáxw4Ñ#Of²..
当我用HxD检查时,我发现它们的前~140kb内容完全相同,但其余~490kb不同,我测试的所有文件都有相似的结构(前xxx kb很好,但其余的很糟糕)。
可能是 URL 中有一些特殊字符与 URL 规则不匹配(至少是您的浏览器)
您可以对这些标签之一进行 URL 解码/编码,然后再次重新测试以确认问题。 https://www.urldecoder.org
在您的情况下,这是您的未编码的网址,请将其放入您的脚本中。 http://cdn.company-name.com:5000/upload/1234-5678-abcd/name-of-doc x.pdf
希望可以帮到你!