Вариантом может быть и групповой год. Щелкните правой кнопкой мыши ячейку с одним из месяцев> group> выберите Years and months. Это поставит месяцы в хронологическом порядке.
Если вы хотите обработать несколько файлов в одном запросе, процедура немного сложная.
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-запрос для каждого файла, но я бы не рекомендовал его, поскольку вы столкнетесь с множеством других проблем (таких как синхронизация всех запросов + управление памятью).
Каким бы ни было решение, оно должно испачкать руки.