使用meteor上传和下载文件

时间:2016-08-02 17:36:20

标签: mongodb meteor file-upload download

我是流星和网络开发的新手,我想为我的流星网络应用程序实现以下目标:

  • 用户可以单击按钮上传.zip文件(我希望将其存储到本地数据库,因为我正在localhost中构建概念验证运行)。
  • 该文件与Mongodb Collection的特定对象相关联。
  • 在与该对象关联的客户端页面上,可以单击按钮下载该.zip文件。

我发现的有关此问题的所有信息都已弃用,指的是collectionFS,或者太具体/适用于小众问题。这已经证明比问题看起来更复杂!

我想要的是一个类似教程的指南,解释如何操作,或者一些代码片段,这些代码片段有助于设置实现上述功能。

修改

我已设法使用包tomi:meteor-upload上传文件。 然后,这将创建一个/.uploads文件夹,我的文件将上传到该文件夹​​。

当我尝试使用<a href="/.uploads/myfilename" download target="_blank">Download</a>从客户端下载它们时,我发现下载的文件已损坏!

我还尝试将它们上传到/public文件夹而不是/.uploads文件夹,但仍然遇到同样的问题。

这是here,但是没有找到解决方案,即使我手动chmod 777我的文件我也遇到了问题!

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试busboy https://github.com/mscdex/busboy

this.route('/upload', {
   where: 'server',
   method: 'POST',
   name:'upload',
   onBeforeAction: (function (req, res, next) {
    //busboy code here 
    var busboy = new Busboy({ headers: req.headers });
    busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
       console.log('File [' + fieldname + ']: filename: ' + filename + ',    encoding: ' + encoding + ', mimetype: ' + mimetype);
       file.on('data', function(data) {
       console.log('File [' + fieldname + '] got ' + data.length + ' bytes');
    });
    file.on('end', function() {
        console.log('File [' + fieldname + '] Finished');
    });
   });
   busboy.on('field', function(fieldname, encoding, mimetype) {
    console.log('Field [' + fieldname + ']: value: ' + inspect(val));
   });
   busboy.on('finish', function() {
    console.log('Done parsing form!');
    res.writeHead(303, { Connection: 'close', Location: '/' });
    res.end();
    next();
  });
  req.pipe(busboy);
});

您可以使用file.pipe(fs.createWriteStream(saveTo));

并且saveTo是您上传的路径,例如:C:/media/,并尝试创建链接示例的ang Path:localhost:80/media/image-here.png使用方法将这些链接存储在您的数据库中,您可以使用APACHE for File hosting。