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

时间:2018-12-27 23:06:17

标签: javascript mysql

我尝试下载以前使用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);
}

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

1 个答案:

答案 0 :(得分:3)

一般构想按预期工作。

但是我建议,您保留 pdf 作为文件

由于 db字段大小(如果您将该字符串保留在db中)或浏览器的请求网址< strong>限制

所以您是 在说

  

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

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