使用nodejs multer上传文件时如何创建year/month/day结构?
how to create year/month/day structure when uploading files with nodejs multer?
我想使用 multer 将文件上传到 year/month/day 的文件夹结构中。
喜欢upload/2021/06/27/filename。我该怎么做?
//configuring multer storage for images
const fileStorage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'upload/');
},
filename: (req, file, cb) => {
cb(null, new Date().toISOString().replace(/:/g, '-') + '-' + file.originalname);
}
});
您可以使用 fs
库函数创建自定义函数,
- 初始化文件系统库
const fs = require("fs");
- 根据输入参数当前日期
创建return日期路径的方法
- 例如:
- 输入:
new Date()
- return: "2021/6/27"
function getDatePath(date) {
return date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate();
}
- 目录不存在递归创建,可以用try-catch块处理
function getDirPath(dirPath) {
try {
if (!fs.existsSync(dirPath)) fs.promises.mkdir(dirPath, { recursive: true });
return dirPath;
} catch (error) {
console.log(error.message);
}
}
- 在目的地使用上述方法
//configuring multer storage for images
const fileStorage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, getDirPath('upload/' + getDatePath(new Date())));
},
filename: (req, file, cb) => {
cb(null, new Date().toISOString().replace(/:/g, '-') + '-' + file.originalname);
}
});
我想使用 multer 将文件上传到 year/month/day 的文件夹结构中。 喜欢upload/2021/06/27/filename。我该怎么做?
//configuring multer storage for images
const fileStorage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'upload/');
},
filename: (req, file, cb) => {
cb(null, new Date().toISOString().replace(/:/g, '-') + '-' + file.originalname);
}
});
您可以使用 fs
库函数创建自定义函数,
- 初始化文件系统库
const fs = require("fs");
- 根据输入参数当前日期 创建return日期路径的方法
- 例如:
- 输入:
new Date()
- return: "2021/6/27"
- 输入:
function getDatePath(date) {
return date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate();
}
- 目录不存在递归创建,可以用try-catch块处理
function getDirPath(dirPath) {
try {
if (!fs.existsSync(dirPath)) fs.promises.mkdir(dirPath, { recursive: true });
return dirPath;
} catch (error) {
console.log(error.message);
}
}
- 在目的地使用上述方法
//configuring multer storage for images
const fileStorage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, getDirPath('upload/' + getDatePath(new Date())));
},
filename: (req, file, cb) => {
cb(null, new Date().toISOString().replace(/:/g, '-') + '-' + file.originalname);
}
});