使用超链接的下载属性时文件损坏?

问题描述 投票:0回答:1

我的公司有一个内部网络来共享数字蓝图和文档,但它有一个问题:超链接无法通过点击下载文档,而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很好,但其余的很糟糕)。

javascript html pdf download digital-signature
1个回答
0
投票

可能是 URL 中有一些特殊字符与 URL 规则不匹配(至少是您的浏览器)

您可以对这些标签之一进行 URL 解码/编码,然后再次重新测试以确认问题。 https://www.urldecoder.org

在您的情况下,这是您的未编码的网址,请将其放入您的脚本中。 http://cdn.company-name.com:5000/upload/1234-5678-abcd/name-of-doc x.pdf

希望可以帮到你!

© www.soinside.com 2019 - 2024. All rights reserved.