gpt4 book ai didi

javascript - 如何将使用 Node js 和 Multer 保存在文件系统上的文件返回到 Angular 前端?

转载 作者:行者123 更新时间:2023-11-30 20:30:21 25 4
gpt4 key购买 nike

我是 angular 和 node js 编程的新手,我需要将文件系统中保存的文件(由 node js 中的后端处理)返回到前端,以便用户可以选择查看它们或下载它们,为了保存它们我使用了 multer 中间件,但是为了将它们带回前端我没有找到有效的解决方案。我尝试使用 fs 创建一个缓冲区数组,但它没有用。有没有人知道有效的解决方案?

在请求中将传递参数以确定哪个文件返回,但现在我正在使用静态文件进行测试。

我的要求:

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);

Node 服务器:

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 应用程序,(如果要从前端创建适当的图像)
  • 如果您想使用 Node 下载图像,您可以读取文件 (fs.createReadStream) 并在执行“发送”之前发送正确的 header 。查看Nodejs send file in response这是一个非常好的答案
  • 最后,我个人的建议是“不要使用node发送文件”,可以使用nginx发送静态内容

关于javascript - 如何将使用 Node js 和 Multer 保存在文件系统上的文件返回到 Angular 前端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50399432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com