在节点js中发送文件以及一些json数据作为响应

时间:2017-11-08 11:32:31

标签: node.js multer

我正在使用multer将文件存储在本地存储中,然后根据当前发送文件并将其发送回来,因为文件正在发送缓冲区(我使用邮递员查看它们)。我还需要在文件旁边发送json数据。

在下面的示例中,我评论了无法按预期工作的resFile代码。我只是用res.send发送json数据。

我的文件结构如下所示

~root 
   -controllers folder (route callback logic here) 
   -storage (with files i need to fetch)
   -route.js file 
   -app.js file (entry point),
   -etc.


try{
            const template =  await Template.findOne({
                where : {
                    user_id : req.user.dataValues.id,
                    template_id : req.params.id 
                }
            }).then((data)=>{
                let dataJSON = {
                    id : data.dataValues.id,
                    user_id : data.dataValues.user_id,
                    template_id : data.dataValues.template_id,
                    title : data.dataValues.title,
                    customizations : JSON.parse(data.dataValues.customizations),
                    attachments : JSON.parse(data.dataValues.attachments)
                }
                let name = path.parse(dataJSON.attachments[0].path).name;
                let ext = path.parse(dataJSON.attachments[0].path).ext;
                console.log(name);
                if(data){
                    // res.sendFile(name+ext,{root :path.join('storage','')},(err)=>{
                    //     if (err) throw err;
                    // });
                    res.send({
                        success : true,
                        data : dataJSON
                    })
                }else{
                    if(err) throw err;
                    res.status(403).send({
                        success : false,
                        message : 'Template Doesnt exist'
                    });
                }
            });
        }

1 个答案:

答案 0 :(得分:0)

您要做的是从您的服务器发送make objs个回复。如果响应发送给您控制的客户端并且可以修改以处理这些响应,那么您应该没问题,但是对它们的浏览器支持将会受到影响。充其量的想念。如果您搜索“多部分响应”,您会发现有关该主题的各种讨论,其中许多都在Stack Overflow中。这里有一些示例代码。multipart/mixed response using NodeJS