Express-fileupload использует следующий код для создания пути к каталогу, который вы передаете функции .mv
:
const checkAndMakeDir = function(fileUploadOptions, filePath){
//Check upload options were set.
if (!fileUploadOptions) return false;
if (!fileUploadOptions.createParentPath) return false;
//Check whether folder for the file exists.
if (!filePath) return false;
const parentPath = path.dirname(filePath);
//Create folder if it is not exists.
if (!fs.existsSync(parentPath)) fs.mkdirSync(parentPath);
return true;
};
Проблема в том, что fs.mkdirSync()
несоздайте полный путь с указанными вами родительскими каталогами (обратите внимание, что вы используете mkdir -p
на оболочке для создания всей структуры папок) -> checkout Как создать полный путь с помощью узла fs.mkdirSync? для получения дополнительной информации.
То, что вы можете сделать, это использовать модуль типа fs-extra
и использовать его функцию ensureDir
, которая создаст соответствующие родительские каталоги (если они еще не существуют)) перед вызовом функции .mv()
.Или, если ваша версия узла>> 10, используйте встроенную опцию {rescursive:true}
, которую вы можете передать fs.mkdirSync
.