Busboy Сохранить Steam для использования позже

Вариантом может быть и групповой год. Щелкните правой кнопкой мыши ячейку с одним из месяцев> group> выберите Years and months. Это поставит месяцы в хронологическом порядке.

0
задан Charlie Fish 29 January 2019 в 14:48
поделиться

1 ответ

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

Busboy проходит через единый поток и генерирует события всякий раз, когда приходят файлы (последовательно). Вы не можете получить отдельные потоки для всех файлов одновременно с Busboy. Это не ограничение библиотеки, это то, как работает HTTP.

Лучшим вариантом будет хранить все файлы во временном хранилище и хранить информацию для следующих промежуточных программ с помощью res.locals:

const Busboy = require('busboy');
const path = require('path');
const fs = require('fs');

module.exports = (req, res, next) => {
  res.locals.files = {};
  // You need to ensure the directory exists
  res.locals.someTemporaryDirectory = '/some/temp/dir/with/randomString/in/it';

  let busboy;
  try {
    busboy = new Busboy({
      headers: req.headers
    });
  } catch (e) {
    return next(e);
  }

  busboy.on("file", (fieldname, file, filename, encoding, mimetype) => {
    res.locals.files[fieldname + '_' + filename] = {
      filename,
      encoding,
      mimetype
    };
    // I skipped error handling for the sake of simplicity. Cleanup phase will be required as well 
    const tempFilePath = path.join(res.locals.someTemporaryDirectory, fieldname + '_' + filename);
    file.pipe(fs.createWriteStream(tempFilePath));
  });

  busboy.on("finish", next);

  req.pipe(busboy);
};

В следующем промежуточном программном обеспечении будут использоваться res.locals.someTemporaryDirectory и res.locals.files заниматься своими делами (это потребует этапа очистки).

Это решение может показаться неоптимальным, но HTTP такой, какой есть. Вы можете вместо этого выдать отдельный HTTP-запрос для каждого файла, но я бы не рекомендовал его, поскольку вы столкнетесь с множеством других проблем (таких как синхронизация всех запросов + управление памятью).

Каким бы ни было решение, оно должно испачкать руки.

0
ответ дан debel27 29 January 2019 в 14:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: