не может прочитать свойство 'buffer' из undefined - PullRequest
0 голосов
/ 04 октября 2019

Я хочу сохранить изображение в mongodb как тип буфера, используя expressjs и multer на стороне сервера, а activjs на стороне клиента. Я пробовал это в почтальоне, и оно отлично работает, но с реагировать не работает

* 1002. * загрузка изображения с использованием почтальона успешно

экспресс-код

const upload = multer({
    limits: {
        fileSize: 1000000
    },
    fileFilter(req, file, cb) {
        if (!file.originalname.match(/\.(jpg|jpeg|png)$/)) {
            return cb(new Error('Please upload an image'))
        }

        cb(undefined, true)
    }
})

router.post('/users/me/avatar', auth, upload.single('avatar'), async (req, res) => {
    console.log(req.file)

     const buffer = await sharp(req.file.buffer).resize({ width: 250, height: 250 }).png().toBuffer();

    console.log(buffer)
    req.user.avatar = buffer
    await req.user.save()

    res.send('image uploaded successfully')
}, (error, req, res, next) => {
    res.status(400).send({ error: error.message })
})

мой запрос React

   const onChangeHandler =(e)=>{
      e.persist();
      const file = e.target.files[0];
      setModifier(modifier=>({...modifier,image:file}));
    }

   const addAvatar = async(e)=>{
            e.preventDefault(); 
            const token = localStorage.getItem('jwtToken');
            const res = await axios.post( `http://localhost:5000/users/me/avatar`,modifier.image,{ headers:{"Authorization" :`Bearer ${token}`}})
              try {
                 console.log(res,'sucsses')
              } catch (error) {
                  console.error(error)
              }
    }
...