我尝试下载以前使用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);
}
在我要下载文件的视图中,我意识到我评论的逻辑
答案 0 :(得分:3)
一般构想按预期工作。
但是我建议,您保留 pdf 作为文件。
由于 db字段大小(如果您将该字符串保留在db中)或浏览器的请求网址< strong>限制
所以您是 在说:
在文本类型字段中将数据存储在数据库中
如果您不打算转移到文件存储,只需将类型字段更改更改为:LONGBLOB