使用文件传输实用程序并且花费一些时间来正确完成传输。
我正在使用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
记录到控制台,在那里它应记录缓冲区数据。
有更好的方法吗?有没有可以帮助解决这个问题的图书馆?什么是正确/更好的方法呢?