Javascript 如何在api中发送数据而不丢失数据

Javascript 如何在api中发送数据而不丢失数据,javascript,php,reactjs,laravel,axios,Javascript,Php,Reactjs,Laravel,Axios,在下面的代码中,我将对象添加到reactJS中的媒体阵列中 const formData = new FormData() formData.append('file', file, file.name) const obj = { 'id': id, 'type': 'doc', 'data': formData, url: file }; setID(id + 1); setMedia([...media, obj]); 现在我通过axios将其发送到api functi

在下面的代码中,我将对象添加到reactJS中的媒体阵列中

const formData = new FormData()
formData.append('file', file, file.name)
const obj = {
  'id': id,
  'type': 'doc',
  'data': formData,
  url: file
};
setID(id + 1);
setMedia([...media, obj]);

现在我通过axios将其发送到api

function addNew() {
  setProgressing(true)
  axios.post(uri + '/api/add', {
      map_id: props.data.id,
      questions: JSON.stringify(media)
    })
    .then(res => {
      props.updateStep();
    })
    .catch(err => {

    });
}

但在服务器端,我收到如下数组对象 请参阅数据,url为空

{id: 1, type: "image", data: {{}}, url: {}}
这是请求头

设置每次上传图像时调用的媒体代码

 function handleUploadChange(e) {
        handleClose();
        const file = e.target.files[0];
        if (!file) {
            return;
        }
        const reader = new FileReader();
        reader.readAsBinaryString(file);
        reader.onload = () => {
            const formData = new FormData()
            formData.append('file', file, file.name)

            const obj = { 'id': id, 'type': 'image', 'data': formData, url: file };
            setID(id+1);
            setMedia([...media, obj]);


        }


        reader.onerror = function () {
            console.log("error on load image");
        };
    }

我找到了解决办法


我在base64中转换图像,并在请求中发送字符串,然后在服务器端将其再次转换为图像。

我进一步解释了我的代码问题您的formData和文件为空,这就是它无法传递的原因。你必须检查它们为什么是空的。如果我对媒体阵列执行
JSON.stringify()
操作,它们就会变成空的。你必须透露更多的信息code@EugeneSunic我想要的是将图像存储在对象数组中,然后将该数组发送到Api