首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于类型的Multer集动态目标

基于类型的Multer集动态目标
EN

Stack Overflow用户
提问于 2019-07-30 05:14:51
回答 1查看 311关注 0票数 0

我有一个API,可以在我的ExpressJS中使用Multer处理文件上传。这是我的代码:

代码语言:javascript
复制
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示例:

EN

回答 1

Stack Overflow用户

发布于 2020-04-14 14:19:25

我今天遇到了一个稍微不同的问题,但也许这能帮你解决你的问题。我想传递一个动态路径,以便上传的文件被安全。我在请求头中通过了我的动态路径,然后从那里继续.

您可以在标头中传递类型,并根据此设置正确的路径。

代码语言:javascript
复制
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));
    }
  })
});

希望这能帮到你!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57264717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档