Javascript 如何将保存在具有Node js和Multer的文件系统上的文件返回到angular前端?
我不熟悉angular和node js编程,我需要将保存在文件系统中的文件(由node js中的后端处理)返回到前端,让用户可以查看或下载这些文件,要保存这些文件,我使用了multer中间件,但要将它们带回前端,我没有找到有效的解决方案。 我尝试使用fs创建缓冲区数组,但没有成功。 有人知道一个有效的解决方案吗 在请求中,将传递参数以标识返回的文件,但目前我正在使用静态文件进行测试 我的请求:Javascript 如何将保存在具有Node js和Multer的文件系统上的文件返回到angular前端?,javascript,node.js,angular,file,multer,Javascript,Node.js,Angular,File,Multer,我不熟悉angular和node js编程,我需要将保存在文件系统中的文件(由node js中的后端处理)返回到前端,让用户可以查看或下载这些文件,要保存这些文件,我使用了multer中间件,但要将它们带回前端,我没有找到有效的解决方案。 我尝试使用fs创建缓冲区数组,但没有成功。 有人知道一个有效的解决方案吗 在请求中,将传递参数以标识返回的文件,但目前我正在使用静态文件进行测试 我的请求: let headers: Headers = new Headers(); headers.appe
let headers: Headers = new Headers();
headers.append('Content-type', 'application/json');
headers.append('Authorization', token);
let link = ${URL_AuthAPI}/systemUsers/list;
let body = JSON.stringify({ obj });
let option = new RequestOptions({ headers: headers });
return this.http.post(link, body, option).map((resposta: Response)=> resposta);
Nodejs服务器:
var filePath = path.join("/home", 'rg.png');
var stat = fileSystem.statSync(filePath);
res.writeHead(200, {
'Content-Type': 'image/png',
'Content-Length': stat.size,
// 'Content-Disposition': 'attachment ; filename=teste.png'
});
var readStream = fileSystem.readFileSync(filePath);
readStream.on('data', function(data) {
response.write(data);
});
readStream.on('end', function() {
response.end();
});
组件代码:
this.systemUsersService.listUsers(this.token, null).subscribe((apiResponse) => {
var data = apiResponse['_body'];
console.log(data);
}, (error: any) => {
}
);
- 如果您希望允许用户下载的文件是公共文件,那么最好的选择是(从后端)将文件URL数组发送到angular应用程序(如果是从前端创建正确的图像)
- 如果要使用节点下载图像,可以读取文件(fs.createReadStream)并在执行“发送”之前发送正确的头文件。看看这是一个非常好的答案
- 最后,我个人的建议是“不要使用node发送文件”,您可以使用nginx发送静态内容