如何将所有图像文件从后端nodejs服务器文件夹发送到Reactjs客户端?我创建了一个网站上传网站,每个用户都可以登录并上传他们的文件。因此,无论何时用户登录,我都希望他/她上传的所有文件在网站上可见。
res.sendFile没有帮助。我发现它不会一次发送多个文件。
到目前为止,它只发送一个在客户端可见的单个文件(控制台日志显示所有文件)。
Nodejs:
function getFiles (dir, files_){
files_ = files_ || [];
var files = fs.readdirSync(dir);
for (var i in files){
var name = dir + '/' + files[i];
if (fs.statSync(name).isDirectory()){
getFiles(name, files_);
} else {
files_.push(name);
}
}
return files_;
}
app.get('/loadit', verifyToken, (req, res) => {
var loadFiles = getFiles(__dirname + /data/);
jwt.verify(req.token, 'secretkey', (err, decoded) => {
if(err) {
res.sendStatus(403);
} else {
loadFiles.map((data1) => {
console.log(data1);
return res.sendFile(data1)
})
}
})
});
执行相同任务是否有其他方法?我还考虑过将所有图像链接作为json列表发送到前端(reactjs),然后从我的nodejs服务器请求图像链接。我根本不知道这是个好主意。
答案 0 :(得分:1)
您可以在服务器上即时生成一个存档文件(如zip),以下载所有图像,例如与https://github.com/archiverjs/node-zip-stream一起制作包含所有图像的zip文件。
如果要显示所有图像,请添加API以获取文件名列表,并添加另一个以获取特定图像文件。
答案 1 :(得分:0)
您永远不能一次发送多个文件,如果要发送用户的所有图像,则应发送一个包含他所有图像的json数组,并在前端逐个获取它们。 / p>