如何下载 MongoDB 中存储为二进制的文件

问题描述 投票:0回答:1

我正在使用 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}/>

这就是 MongoDB Compass 中的样子:

我想知道如何将 Mongo 文档转换为可下载文件。谢谢

reactjs mongodb meteor
1个回答
0
投票

有非常流行的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 表示(它本身是在上传时创建的)。

© www.soinside.com 2019 - 2024. All rights reserved.