将Backbone.js模型中的BASE64文件发送到浏览器

时间:2013-03-03 09:30:59

标签: javascript backbone.js

我在骨干模型中有一个BASE64编码文件。

看起来像这样(console.log(model.toJSON());):

Attachments: Array[1]
    0: Object
        Content: "JVBERi0xLjQKJeLjz9MKMSAwIG9iaiA8PC9UeXBlL..."
        ContentLength: 29512
        ContentType: "application/octet-stream"
        Name: "Notification.pdf"

如何通过点击事件强制下载,将其发送到浏览器? 我想避免回到服务器来执行此操作。

由于

1 个答案:

答案 0 :(得分:0)

您有几个不同的选项,都涉及Data URIs

如果您只是想快速下载并且不关心文件名是什么,那么您可以让JS执行此操作:

window.location = 'data:application/octet-stream;base64,JVBERi0xLjQKJ...';

但是,如果您希望能够为下载指定文件名,则需要重新使用新的HTML5功能和<a>标记。

var a = document.createElement('a');
a.href = 'data:application/octet-stream;base64,JVBERi0xLjQKJ...';
a.download = 'Filename.pdf';
a.click();

这适用于较旧的浏览器,但由于download属性是HTML5中的新属性,因此他们将在没有正确文件名的情况下下载该文件。