Javascript 如何将保存在具有Node js和Multer的文件系统上的文件返回到angular前端?

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

我不熟悉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);
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发送静态内容

欢迎使用堆栈溢出!您可能希望更具体一点,并可能显示一些您正在尝试执行的代码?我很困惑:你需要归还文件还是一份文件清单?是否需要递归(遍历目录?)是否需要保留目录格式?谢谢。它不必是递归的,我需要返回一个列表,以防一次不能返回一个文件。其目的是将它们返回到html,以便用户可以下载他上载的文件。首先,我测试了以下代码:,但它返回的类型与我读到的有关方法的类型相同返回是一个可读的流,当请求类型为get时,浏览器会在屏幕上呈现文件,就像我执行post类型的请求一样,我不知道如何处理这个字符串。最好在您的问题中添加代码。我已经为您添加了它。但是也许你可以再多填一点?我已经添加了代码谢谢你的帮助,但是现在我遇到了我在上面的评论中引用的问题,我不知道如何处理该方法返回的可读字符串,我尝试生成一个blob,甚至转换为base64,但它不起作用。我正在搜索以查看是否找到更多选项。欢迎。在您的情况下,您不需要对可读流做太多的工作,只需将它发送到前端,添加我指示的标题,并使用方法管道“流化”图像对象(如您所知,可读流),并传递express response对象。查看文档以了解它: