在HTTP端点nodejs之间发送文件

时间:2017-08-18 15:56:33

标签: node.js express

使用文件传输实用程序并且花费一些时间来正确完成传输。

我正在使用Chokidar完成文件夹观察,并在Chokidar中添加,我创建了一个添加到数组的文件对象。每个对象如下所示:

l.files.push({
  dateAdded: Date.now(),
  fileName: fileName,
  filePath: filePath,
  fullPath: p
  });

并且客户端检入,获取可供下载的文件数,然后为每个文件发出HTTP请求:(包含在对象中)

getFile: (loc, home) => {
  var connection = home + 'files/?loc=' + loc;
  h.get(connection, (res) =>{
    let filePath = config.thisIncoming;
    console.dir(res.body); 
  });   
}

home是api调用的baseUrl,loc是要查找的API的位置标识符。

Express端点设置为响应此调用:

app.get('/files', (req, res) => {
  // console.dir(req);
  for( let f of filePaths){
    console.dir(f);
    if((f.name === req.query.loc)&&(f.files.length > 0)){
      let file = f.files.pop();
      var fileName = file.fileName;
      fs.readFile(file.fullPath, (err, dat) => {
        if(err){
          console.log(err);
          res.send({status: 'NO FILES'});
        }else{
         if(dat){
            console.log(dat);
            res.send({name: fileName, data: dat});
          }
        }
      });
      }
    }
});

我不想使用res.download()res.sendFile()方法,因为我希望能够将文件名与文件中的数据一起发送。我已将其设置为发送缓冲区,但在客户端,它会将undefined记录到控制台,在那里它应记录缓冲区数据。

有更好的方法吗?有没有可以帮助解决这个问题的图书馆?什么是正确/更好的方法呢?

0 个答案:

没有答案