无法使用node和angular2中的multer文件将多个文件上传到本地目录

问题描述 投票:1回答:0

我有一个要在node.js上传多个图像的要求。 所以我在前端使用angular2 。 我正在使用formData将文件发送到节点部分。 下面是代码:

public setAnswerImage(obj:any,files:any):Promise<any> {
        try {
          let urlDetails = obj["id"] ? ANSWER_URLS['updateimages'] : ANSWER_URLS['insertimages'];
          let formData = new FormData();

          Object.keys(obj).forEach(key =>{
              formData.append(key,obj[key]);
          }); 
         console.log(formData)
          for(let i =0; i < files.length; i++){
            formData.append("uploads[]", files[i],files[i]['name']);
        }
          console.log(formData)
          return this.restUtils.post(urlDetails, formData, {"id":obj["id"]});
        }
        catch(err) {
          return Promise.reject(err);  
        }
      }


let urlDetails = obj["id"] ? ANSWER_URLS['updateimages'] : ANSWER_URLS['insertimages'];  

如果obj包含id,我将调用update方法,否则调用insert方法。

export const ANSWER_URLS = {
 insertimages : { url : "/api/answer/response/insertimages"}
}

在节点部分中,我正在使用multer文件存储,我已经创建了一个文件夹,因为temp,并且在multer中将此路径设置为该文件夹,如下所示。

router.post("/response/insertimages", upload.array("uploads[]", 12), (req: Request, res: Response, next: NextFunction) => {
      new AnswerRoute().saveAnswerImages(req, res, next);
    });

    var storage = multer.diskStorage({
      destination: (req: Request, file, cb) => {
       cb(null, video_path.dest + 'temp//');
      }, filename: (req:Request, file, cb) => {

          let name = file.originalname.split('.');
          console.log(name,"mnae")
        cb(null, new Date().getTime().toString() + '.' + name[name.length-1]);
    }

    })

    var upload = multer({ storage: storage }); 

Console.log输出显示了我上传的多个文件,但是在temp文件夹中,我只能看到一个:

[ 'doctor', 'jpg' ] 'mnae'
[ 'Doctorvisits', 'png' ] 'mnae'

上面的输出显示了我上传的两张图像,但是在temp文件夹中仅保存了一个文件。

我正在使用upload.array("uploads[]",12) ,其中上载包含多个文件,但是问题是当我上载多个文件时,只有第一个文件上载到temp文件夹。

我在哪里出错了?

请帮我

node.js angular2-routing
© www.soinside.com 2019 - 2024. All rights reserved.