如何在Axios中修复图像上传

时间:2019-09-13 15:22:43

标签: javascript axios multer cloudinary

我无法在反应中上传图像。我将axios用于api请求,并使用multer和cloudinary进行文件上传。

更新: 在我的依赖中: “ axios”:“ ^ 0.19.0”

.js文件中必需的依赖项: 从“ axios”导入axios;

图片上传已经在我的后端使用了。但是在反应中它仍然不起作用。我已经检查了所有内容,看起来还不错。 下面是代码:

  const [text, setText] = useState('');
  const [image, setImage] = useState([]);

  const onSubmit = async e => { 
    e.preventDefault();
    let data = new FormData();
    console.log(image + ' ' + 'this is image pathname')
    data.append('image', image);

      axios.post('/api/posts/image', data)
     .then(res => {
        console.log(res.data + 'this is data after api call');
     })
     .catch(err => console.log(err));
  };

return (
   <Fragment>
      <form onSubmit={e => onSubmit(e)} className="create-post-form">
         <input
      type="file"
      placeholder="Write something..." 
      name="image"
      value={image}
          onChange={e => setImage(e.target.value)}
         />
        <br/>
    <button className="btn btn-post">Post</button>
      </form>
  </Fragment>
);

UPDATE服务器端代码:

app.post('/image', upload.single('image'), async (req, res) => {

    try {
        const result = await cloudinary.v2.uploader.upload(req.file.path);
        res.send(result);
    } catch(err) {
        res.status(500).send('Server Error');
    }
});

错误消息:POST http://localhost:3000/api/posts/image 500(内部服务器错误)

1 个答案:

答案 0 :(得分:0)

首先,我看不到任何这样的标题:

const config = {
            headers: { 'content-type': 'multipart/form-data' }
           }

所以应该是这样的:

   const config = {
            headers: { 'content-type': 'multipart/form-data' }
           }

   axios.post('/api/posts/image', data,config)
     .then(res => {
        console.log(res.data + 'this is data after api call');
     })
     .catch(err => console.log(err));

我也看不到您的服务器代码,但是请检查您的软件包中是否包含multer并表示配置。