我使用此功能保存了一个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出版/订阅机制发布该文件的斑点我刚刚描述了。