从Collection中阅读Uint8array缓冲区,并以PDF下载



我使用此功能保存了一个PDF文件:

/*** client.js ***/
// asign a change event into input tag
'change input' : function(event,template){ 
    var file = event.target.files[0]; //assuming 1 file only
    if (!file) return;
    var reader = new FileReader(); //create a reader according to HTML5 File API
    reader.onload = function(event){          
      var buffer = new Uint8Array(reader.result) // convert to binary
      Meteor.call('saveFile', buffer);
    }
    reader.readAsArrayBuffer(file); //read the file as arraybuffer
}
/*** server.js ***/ 
Files = new Mongo.Collection('files');
Meteor.methods({
    'saveFile': function(buffer){
        Files.insert({data:buffer})         
    }   
});

如何从集合中再次阅读并提供下载链接,用户可以将文件作为pdf下载并保存在本地计算机上?

这取决于当您在minimongo集合中看到该文档记录时,数据类型最终要在前端。您想做的是将Uint8array数据转换为基本64编码的数据URL,并在获取浏览器中的数据后提供<a href="data:application/pdf;base64,...">Download PDF</a>链接。

Meteor不支持从框开口的服务器中的文件,因此您可能必须通过Mongo-> minimongo出版/订阅机制发布该文件的斑点我刚刚描述了。

最新更新