我将 node 与 express 结合使用,以下代码按预期工作。
文件 app.js
app.use(function (req, res, next) {
fs.mkdir('uploads/', function (e) {
if (!!e && e.code !== 'EEXIST') {
console.log('Error while trying to create upload folder: ' + err);
}
next();
});
}, upload.single('file'));
我的问题是有没有更好的写法呢?
我的意思是将功能逻辑分离到其他文件并要求它?
我建议创建文件“{project_root}/middlewares/fsUtils.js”:
function createFolderIfNotExists(folder) {
return function (req, res, next) {
fs.mkdir(folder, function (e) {
if (!!e && e.code !== 'EEXIST') {
console.log('Error while trying to create upload folder: ' + err);
}
next();
});
};
}
module.exports = {
createFolderIfNotExists: createFolderIfNotExists
};
然后你可以像这样使用它:
var fsUtils = require('./middlewares/fsUtils');
app.use(fsUtils.createFolderIfNotExists('/uploads'), upload.single('file'));
虽然不是理想的方法。最好将初始化逻辑移动到单独的脚本并在应用程序启动时运行它,这样当您期望“上传”文件夹存在于文件系统中时 - 它已经存在了。