expressjs - 如何在另一个文件中要求 multer
expressjs - how to require multer in another file
我根据 github
中的自述文件使用 multer
自述文件说在 middleware 中调用 multer 是这样的:
app.js
var multer = require('multer')
app.post('/upload', upload.single('image'), function(req, res){})
但我在另一个文件中定义了我的 function(req, res) - post.js - 我的代码在 app.js 看起来像这样:
app.post('/upload', upload.single('image'), post.new)
我如何 要求 仅在 post.js 上进行 multer,几乎像这样:
post.js
var multer = require('multer')
module.exports.new = function(req, res){
//access to req.file
}
app.js
app.post('/upload', post.new)
我可以想到两个办法
首先,您可以将 new
公开为数组:
module.exports.new = [upload.single('image'), function(req, res) {
...
}];
其次,您可以在函数中使用 multer
:
var imageUpload = upload.single('image');
module.exports.new = function(req, res) {
imageUpload(req, res, function(err) {
// Put the rest of your code here
});
};
在第二种方法中,我们只是自己调用 multer
中间件函数,将我们自己的函数传递给它以用作 next
回调。在 https://github.com/expressjs/multer#error-handling 上有更多关于执行此操作的信息,尽管它在稍微不同的上下文中描述了该技术。
对于 MVC 结构您可以简单地通过以下方式完成此操作:
function Uploader(req, res, next) {
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, your_path);
},
filename: function (req, file, cb) {
cb(null, filename)
}
});
var upload = multer({
storage: storage
});
return upload;
}
module.exports = Uploader
在另一个文件中,您可以简单地使用
app.post('/upload', Uploader.single('image'), function(req, res){})
如果您不想创建函数,可以执行以下操作:
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, upload_filePath)
},
filename: function (req, file, cb) {
cb(null,filename)
}
})
var upload= multer({
storage : upload
})
module.exports.upload=upload;
两者给出相同的结果,但使用函数更合适。
我根据 github
中的自述文件使用 multer
自述文件说在 middleware 中调用 multer 是这样的:
app.js
var multer = require('multer')
app.post('/upload', upload.single('image'), function(req, res){})
但我在另一个文件中定义了我的 function(req, res) - post.js - 我的代码在 app.js 看起来像这样:
app.post('/upload', upload.single('image'), post.new)
我如何 要求 仅在 post.js 上进行 multer,几乎像这样:
post.js
var multer = require('multer')
module.exports.new = function(req, res){
//access to req.file
}
app.js
app.post('/upload', post.new)
我可以想到两个办法
首先,您可以将 new
公开为数组:
module.exports.new = [upload.single('image'), function(req, res) {
...
}];
其次,您可以在函数中使用 multer
:
var imageUpload = upload.single('image');
module.exports.new = function(req, res) {
imageUpload(req, res, function(err) {
// Put the rest of your code here
});
};
在第二种方法中,我们只是自己调用 multer
中间件函数,将我们自己的函数传递给它以用作 next
回调。在 https://github.com/expressjs/multer#error-handling 上有更多关于执行此操作的信息,尽管它在稍微不同的上下文中描述了该技术。
对于 MVC 结构您可以简单地通过以下方式完成此操作:
function Uploader(req, res, next) {
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, your_path);
},
filename: function (req, file, cb) {
cb(null, filename)
}
});
var upload = multer({
storage: storage
});
return upload;
}
module.exports = Uploader
在另一个文件中,您可以简单地使用
app.post('/upload', Uploader.single('image'), function(req, res){})
如果您不想创建函数,可以执行以下操作:
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, upload_filePath)
},
filename: function (req, file, cb) {
cb(null,filename)
}
})
var upload= multer({
storage : upload
})
module.exports.upload=upload;
两者给出相同的结果,但使用函数更合适。