我尝试下载以前使用 base 64 编码的 pdf 文件。
我尝试从一个锚标签下载它,如下
<a href="data:application/pdf;base64,JVBERi0xLjUKJbXtrvsKMyAwIG9..." download="file.pdf">Download</a>;
Run Code Online (Sandbox Code Playgroud)
该文件已下载,但当我尝试打开它时,我收到一条消息,指出该文件已损坏或已损坏。
有趣的是,如果我将 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);
}
Run Code Online (Sandbox Code Playgroud)
然后,在我想下载文件的视图中,我意识到我评论的逻辑
一般想法按预期工作。
但我建议您将pdf作为文件保留。
原因您损坏的 pdf 问题可能是由于db 字段大小(如果您将该字符串保留在 db 中)或浏览器的请求 url限制
所以你 说:
将数据存储在数据库中的文本类型字段中
如果您不打算转移到文件存储,只需将字段类型更改为:LONGBLOB
| 归档时间: |
|
| 查看次数: |
1488 次 |
| 最近记录: |