用axios发布数据和文件

时间:2019-06-17 20:59:45

标签: node.js reactjs

我正在尝试使用axios发送 object file 。 但是,服务器似乎无法获得我期望的数据。

我尝试同时发送 state = {number: 1}作为数据和文件。

//react js

let formData = new FormData();
    formData.append('file', this.state.selectedImage);
    formData.append('data', this.state);
    axios.post('url is correct', formData, {
        headers: {
            'Content-Type': 'multipart/form-data'
        }
    });

我只想确保上面是在客户端中同时发送数据和文件的正确方法。

//node 
.
.
.
body: { data: '[object Object]' },
  files:
   { file:
      { name: '232217736.png',
        data: <Buffer >,
        size: 43015,
        encoding: '7bit',
        tempFilePath: '\\tmp\\tmp-1-1560804010093',
        truncated: false,
        mimetype: 'image/png',
        md5: '84c3c16304d6140d960789e7037fba43',
        mv: [Function: mv] } }
.
.
.

以上是从客户端获得的服务器。但是,我无法使用数据。 当我使用console.log()时,数据不显示其内容,并且我无法使用任何适用于javascript对象的方法。

1 个答案:

答案 0 :(得分:0)

发送整个状态对象时出错。 对象具有显示toString()的不可见'[object Object]'方法。试试:

alert({a: 'a', b: 'b'}) // [object Object]

有几种解决方法:

  1. 使用JSON.stringify

    JSON.stringify({a: 'a', b: 'b'})

然后在后端使用JSON.parse

  1. 添加到 state toString()方法(不好的方法,非常糟糕)。