在Node.js中处理“原始数据”并在Node Express端点中传递数据

时间:2019-05-28 08:40:06

标签: javascript node.js express stream axios

我正在使用axios进行API调用以获取文件

   async function getData() {
    const config = {}; // { responseType: 'stream'};
    const { data } = await axios.get(URL, config);

    console.log(data);
    return data;
   }

当我尝试打印HTTP请求的结果时,我得到了一堆废话(看起来像某种原始数据)-快照在这里:

...
�nG��p���1�l�ՓA�zw:/F�  �@LJW>
��⟿_��̠����������=�|�d�s_���A�GԢ������ 
...

我想将此数据(图像或视频文件)传递给到达Node Express服务器端点的任何人-我该怎么做?我已经阅读了有关使用Stream的内容,然后将其通过管道传递到响应中。

   router.get("/file", async(res,res) => {
       const file = await getFile();

       //const stream = fs.createReadStream(file)
       //res.pipe(stream)
   })

但是我的问题是,我首先不知道如何处理从API返回的数据。我尝试将axios的responseType更改为stream(默认值:json),这给了我一个对象,但也不确定如何处理它。

编辑-尝试1:

 async function getData() {
    const config = { responseType: 'stream'};
    const { data } = await axios.get(URL, config);

    console.log(data);
    return data;
   }

   router.get("/file", async(res,res) => {
       const file = await getFile();

       file.pipe(res);
   })

1 个答案:

答案 0 :(得分:1)

在流responseType的情况下,axios解析为其data属性是流的响应对象,您可以将该对象通过管道传递给响应:

 const file = await getFile();
 file.data.pipe(/*to*/ res);