Я пытаюсь загрузить несколько файлов с помощью HTTP-сообщения, а затем NodeJS обрабатывает:
- сохраняет информацию о файлах в базе данных
- перемещает файлы из папки tmp в постоянная папка
- в случае сбоя при перемещении любого файла удалите файл из папки tmp
Мои две проблемы описаны в комментариях в фрагменте кода ниже:
- path.resolve не работает
- итератор не работает в fs.rename
for (i = 0; i < req.files.length; i++) {
const file = new fileSchema({
_userId: req.body._userId,
_companyId: req.body._companyId,
_meetingId: response._id,
originalFilename: req.files[i].originalname,
savedFilename: req.files[i].filename,
});
file.save().then((response) => { }).catch(error => { console.log(error) });
const currentPath = path.resolve(temp_folder, req.files[i].filename);
const newPath = upload_folder +"/"+ req.body._userId +"/"+ req.body._companyId +"/"+ response._id +"/"+ req.files[i].filename;
// 1. why doesn't path.resolve work with the inputs on the line above? I have to concat a string as in line above?
fs.rename(currentPath, newPath, function(err) {
if (err) {
console.log("Error moving files");
try { removeTempFiles(temp_folder, req.files[i]); } // helper function which works written elsewhere
// 2. req.files[i] is undefined (even though req.files works) so the line above fails - i.e. the iterator isn't captured within rename?
catch(err) { console.log(err); }
} else {
console.log("Successfully moved the file!");
}
});
}
Любая помощь приветствуется, спасибо.