我正在使用 MeteorJs、MongoDB 和 React。我想简单地制作一个模块来上传/下载文件并将它们存储在 MongoDB 集合中。到目前为止,我可以上传文件,但我不知道如何下载。
这是服务器中的方法:
Meteor.methods({
'saveFile': function(one){
ChivoFiles.insert({data:one.buffer})
}
});
这是客户端上传的:
uploadFile(event) {
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 elBuffer = new Uint8Array(reader.result) // convert to binary
const one= {buffer: elBuffer}
Meteor.call('saveFile', one);
}
reader.readAsArrayBuffer(file);
}
<input type="file" id="fileinput" disabled={this.state.inProgress} ref="fileinput" onChange={this.uploadFile}/>
我想知道如何将 Mongo 文档转换为可下载文件。谢谢
有非常流行的Meteor-Files包,它处理文件上传、下载、权限等
这是适合您的用例的完美解决方案。
您可以将其与外部存储(S3等)或本地存储(FileSystem、GridFs)一起使用:https://github.com/veliovgroup/Meteor-Files/blob/master/docs/3rd-party-storage。 md
它还将您的文件表示为
Mongo.Collection
中的文档,因此您可以访问文件信息和元数据,而无需实际下载文件。
下载文件是通过
MyFilesCollection.link(fileDoc._id)
处理的,它为文件创建一个基于 http 的下载链接,由 fileDoc 表示(它本身是在上传时创建的)。