Отправьте все файлы изображений из node.js в веб-интерфейс - PullRequest
0 голосов
/ 25 июня 2018

Как я могу отправить все файлы изображений из папки моего внутреннего сервера nodejs на мой клиент Reactjs?Я создал веб-сайт для загрузки, где каждый пользователь может войти и загрузить свои файлы.Поэтому, когда пользователь входит в систему, я хочу, чтобы все загруженные им файлы были видны на веб-сайте.
res.sendFile не помог.Я обнаружил, что он не отправляет несколько файлов одновременно.Пока что отправляется только один файл (в журнале консоли отображаются все файлы), видимый на стороне клиента.

Узлы:

    function getFiles (dir, files_){
    files_ = files_ || [];
    var files = fs.readdirSync(dir);
    for (var i in files){
        var name = dir + '/' + files[i];
        if (fs.statSync(name).isDirectory()){
            getFiles(name, files_);
        } else {
            files_.push(name);
        }
    }
    return files_;
    }

  app.get('/loadit', verifyToken, (req, res) => {
  var loadFiles = getFiles(__dirname + /data/);
   jwt.verify(req.token, 'secretkey', (err, decoded) => {
    if(err) {
      res.sendStatus(403);
    } else {
        loadFiles.map((data1) => { 
          console.log(data1);
          return res.sendFile(data1)
      })
    }
  })
});

Есть ли другой подход для выполненията же задача?Я также подумал о том, чтобы отправить ссылку на все изображения в виде списка json на веб-интерфейс (actjs), а затем запросить ссылку на изображения с моего сервера nodejs.Я не знаю, хорошая ли это идея вообще.

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Вы никогда не можете отправлять более одного файла за раз, если вы хотите отправить все изображения пользователя, вы должны отправить массив json со всеми его изображениями, а во внешнем интерфейсе получить их по одному.

0 голосов
/ 25 июня 2018

Вы можете создать архивный файл (например, zip) на лету на сервере, чтобы загрузить все изображения, например, https://github.com/archiverjs/node-zip-stream для создания zip-файла со всеми изображениями.

Если вы хотите показать все изображения, добавьте API для получения списка имен файлов, а другой - для получения определенного файла изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...