0

I need to upload 2 fields, one for image and the other for video, but when I try to upload both, it doesn't work. When I upload an input it works fine for me, as I show below, but I don't know how to modify it to receive 2 files and upload it with multer to gcs

In the front

  let formdata = new FormData();
  formdata.append("name", name)
  formdata.append("price", price) 
  formdata.append("desc", desc)
  formdata.append("type", type)
  formdata.append("image", {uri: image, name: 'image.jpg', type: 'image/jpeg'})
  formdata.append("user_id", user.uid)
  formdata.append("video", {uri: video})

In the Back

router.post('/addService',  multer.single('image'),  imgUpload.uploadToGcs,  async (req, res, next) =>  {
try {
    const data = req.body;
    if (req.file && req.file.cloudStoragePublicUrl) {
         data.imageUrl = req.file.cloudStoragePublicUrl;
    }
     let user_id = data.user_id;
     delete data.user_id
     const newService = new Services( {service_data:data, photo_gallery:"", video_galery:"", user_id:user_id});
     await newService.save();
     return res.status(201).json({
        result: "200",
    })
} catch (error) {
    console.log(error)
    return res.status(400).json({
        result: error,
    })
}

I tried to make the following change but it didn't work for me, I

router.post('/addService',  multer.single('image'),multer.single('video'),  imgUpload.uploadToGcs,  async (req, res, next) =>  {
try {
    const data = req.body;
    if (req.file && req.file.cloudStoragePublicUrl) {
         data.imageUrl = req.file.cloudStoragePublicUrl;
    }
     let user_id = data.user_id;
     delete data.user_id
     const newService = new Services( {service_data:data, photo_gallery:"", video_galery:"", user_id:user_id});
     await newService.save();
     return res.status(201).json({
        result: "200",
    })
} catch (error) {
    console.log(error)
    return res.status(400).json({
        result: error,
    })
}


also tried to use multer.fields and it didn't work either

router.post('/addService',  multer.fields[{image},{video}],  imgUpload.uploadToGcs,  async (req, res, next) =>  {
try {
    const data = req.body;
    if (req.file && req.file.cloudStoragePublicUrl) {
         data.imageUrl = req.file.cloudStoragePublicUrl;
    }
     let user_id = data.user_id;
     delete data.user_id
     const newService = new Services( {service_data:data, photo_gallery:"", video_galery:"", user_id:user_id});
     await newService.save();
     return res.status(201).json({
        result: "200",
    })
} catch (error) {
    console.log(error)
    return res.status(400).json({
        result: error,
    })
}

0 Answers0