繁体   English   中英

下载以base64编码的文件时pdf文件已损坏

[英]pdf file is corrupted when a file encoded in base64 is downloaded

我尝试下载以前使用base 64编码的pdf文件。

我尝试从锚标记下载它,如下所示

<a href="data:application/pdf;base64,JVBERi0xLjUKJbXtrvsKMyAwIG9..." download="file.pdf">Download</a>;

该文件已下载,但是当我尝试打开该文件时,我收到一条消息,指出该文件已损坏或已损坏。

有趣的是,如果我将href更改为编码图像数据,则文件将按预期下载并打开。

我找到了这个示例http://jsfiddle.net/filixix/0816jdfq/ ,我发现它已从data:application/pdf;base64,更改为data:application/octet-stream;base64 ,我尝试了但我得到了相同的结果结果。

更新资料

我将pdf文件编码如下

const element = document.querySelector('#file'); // input type file

element.addEventListener('change', handleChange);

function handleChange() {
    const file = this.files[0];
    const fileReader = new FileReader();

    fileReader.onload = function() {
        const data = this.result;

        //  store data in database in a text type field
    };

    fileReader.readAsDataURL(file);
}

母鸡,在我要下载文件的视图中,我意识到我评论的逻辑

一般构想按预期工作。

但我建议 pdf 保留 为file

原因损坏的pdf问题可能是由于db字段大小 (如果将该字符串保留在db中)或浏览器的请求URL 限制引起的

所以

在文本类型字段中将数据存储在数据库中

如果您不打算移至文件存储,只需字段类型 更改为: LONGBLOB

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM