我正在使用快递文件包。我这样使用它:
const upload = require('express-fileupload');
app.use(upload({
createParentPath: true
}));
这是我的存储方式:
await req.files.main_image.mv('./public/images/movies/'+main_image);
我已经创建了public / images目录。我的public / images目录中没有电影目录。
当它起作用时:如果我已经创建了/ public / images / movies目录,则它起作用了
它不起作用:如果我没有创建/ public / images / movies目录,但是有/ public / images目录。然后它说:
ENOENT:没有这样的文件或目录,请打开 'C:\ Users \ glagh \ Desktop \ Work \ MoviesAdviser \ public \ images \ movies \ 1554741546720-8485.11521.brussels.the-hotel-brussels.amenity.restaurant-AD3WAP2L-13000-853x480.jpeg
该怎么做才能自动创建/ movies目录并将图像放置在其中?
答案 0 :(得分:0)
Express-fileupload使用以下code创建传递给.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
来创建整个文件夹结构)->结帐{ {3}},以获取更多信息。
您可以做的是使用fs-extra
之类的模块,并使用其How to create full path with node's fs.mkdirSync? ensureDir
,该模块会在调用{之前创建相应的父目录(如果尚不存在) {1}}功能。
或者,如果您的节点版本> = 10,则使用本机.mv()
选项,您可以将其传递给{rescursive:true}
。