Как отправить несколько файлов с сервера nodejs для реакции клиента - PullRequest
0 голосов
/ 09 июля 2020

Привет, я хочу отправить множество разных файлов с node js сервера, чтобы реагировать на клиентскую сторону, чтобы иметь возможность загружаться на страницу. Ранее я мог отправить одно изображение с помощью fs.readFile, но я пытаюсь применить это к нескольким файлам (могут быть изображения / pdf / другие типы файлов), но, похоже, отправляет обратно что-то, в котором говорится, что тип данных - это приложение json даже если во внешнем интерфейсе я указал responseType: 'blob'. В этой функции я запрашиваю в базе данных пути к файлам и оттуда пытаюсь прочитать файл и отправить его в массив. Я не уверен, что поступаю правильно, может кто-нибудь порекомендует лучший способ.

//serverside

readChangelogAttachements (req, res) {

        let body = req.method === 'POST'? req.body: req.query;
    
        let files = []

        db.generalQuery(`Example query`, (resp) => {

            //ERROR
            if (!resp.success) {

                resp.location = 'Error in attachements';
                log.error(resp);
                return res.status(resp.status).json(resp);
            }
            else {
                console.log("Attachemnts" , resp.data)
                resp = resp.data;

                for(let i = 0; i<resp.length; i++) {
                    fs.readFile(resp[i].file_path, (err, data)=> {
                        files.push(data);
                    })
                }

               
            }
        });


        res.send({
            success:true,
            files,
            id: body.id
        })

    }


//client side 

requestAttachements = (id)=> {
    let params = {
      id
    }

    console.log("ID", id);

    axios({
      url: /fake/example/attachements',
      method: 'GET',
      headers: {
        Authorization: 'Bearer ' + token
      },
      responseType:'blob',
      timeout: 10000,
      params
    }).then((response)=>{

      console.log("REQUEST ATTACHMENT", response);

      //Fill row with images

    }).catch((error)=>{
      console.log(error);
    })

  }


...