我有一个API,可以在我的ExpressJS中使用Multer处理文件上传。这是我的代码:
const storage = multer.diskStorage(
{
destination : path.join(pathStorage + pathIdCard),
filename: function(req, file, cb){
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
}
);
const upload = multer({
storage : storage
}).single('image');
router.post('/upload-image', function(req, res){
try {
upload(req, res, err => {
responseUtil.success(res, obj);
});
} catch (e) {
responseUtil.fail(res, 'Upload image failed!')
}
});上面的代码运行良好,但上面的代码只适用于一个目标。我想要基于名为type的属性来创建目的地。
我只有两种类型: 1.身份证,2.自拍.
因此,如果类型是ID-Card,则目标应该是pathStorage + pathIdCard,但是如果类型是自拍,则目标应该是pathStorage + pathSelfie。
我试着从另一个问题中得到答案,但对我来说没有什么用。
下面是我使用postman的Req示例:

发布于 2020-04-14 14:19:25
我今天遇到了一个稍微不同的问题,但也许这能帮你解决你的问题。我想传递一个动态路径,以便上传的文件被安全。我在请求头中通过了我的动态路径,然后从那里继续.
您可以在标头中传递类型,并根据此设置正确的路径。
const upload = multer({
storage: multer.diskStorage({
destination: (req, file, callback) => {
let path;
if(req.headers.type === 'ID_TYPE') {
path = pathStorage + pathIdCard;
} else {
path = pathStorage + pathSelfie;
}
callback(null, path);
},
filename: function(req, file, cb){
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
})
});希望这能帮到你!
https://stackoverflow.com/questions/57264717
复制相似问题