Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 无法将多部分/表单数据发送到nodejs服务器_Reactjs_Axios - Fatal编程技术网

Reactjs 无法将多部分/表单数据发送到nodejs服务器

Reactjs 无法将多部分/表单数据发送到nodejs服务器,reactjs,axios,Reactjs,Axios,我正在尝试在我的react应用程序中发送多部分/formdata。每次我使用axios访问PostAPI时,formdata总是空的。我尝试转换为JSON.stringify和key-value方法,但似乎没有任何效果。我确实将标题设置为“内容类型”:“多部分/表单数据” postList = (e) => { e.preventDefault(); var postParams; if(this.state.message && this.st

我正在尝试在我的react应用程序中发送多部分/formdata。每次我使用axios访问PostAPI时,formdata总是空的。我尝试转换为JSON.stringify和key-value方法,但似乎没有任何效果。我确实将标题设置为“内容类型”:“多部分/表单数据”

postList = (e) => {
    e.preventDefault();


    var postParams;
    if(this.state.message && this.state.parent){

      postParams = {
        message: this.state.message,
        chat_m_id: this.state.parent,
        depth: (1).toString(),
        msg_icon: this.state.msg_icon.name
      }
    }
    else{    
      postParams = {
        message: this.state.message,
        chat_m_id: (0).toString(),
        depth: (0).toString(),
        msg_icon: this.state.msg_icon.name
      }
    }
    console.log(postParams);
    let bodyFormData = new FormData();

    //approach-one
      bodyFormData.append('data',postParams);

    //approach-one
      // bodyFormData.append('data',JSON.stringify(postParams));

    //approach-three
      // for (let [key, value] of Object.entries(postParams)) {
      //     bodyFormData.append(`'${key}'`, JSON.stringify(`${value}`));
      // }

console.log(bodyFormData) //this is always empty


    axios.post(GlobalVar.BASE_URL+'api/msgtemplate/create', bodyFormData, {headers: GlobalVar.headersFormData})
    .then(res => {
      console.log(res)
      this.props.history.push('/messages')
    })
    .catch(err => console.log(err.res));

  }

我花了几个小时来解决这个问题,请帮助解决。

以下是使用axios发送文件的示例:

在您的情况下,我已在此处调试了您的代码:


我正在采取类似的做法。如果你能帮助调试我的代码?这里是虚拟@bubble cord,你不能在同一个后端api上传文件和名字和姓氏,文件必须是不同的api,然后在不同的api中发送姓氏,我已经编辑了codesandbox来上传文件,如果你想上传名字,做另一个按钮,这样做
state = { selectedFile: null }
//handler for file change event
fileChangedHandler = event => {
  this.setState({ selectedFile: event.target.files[0] })
}

  uploadHandler = () => {
    const formData = new FormData()
    formData.append(
      'myFile',
      this.state.selectedFile,
      this.state.selectedFile.name
    )
    axios.post('my-domain.com/file-upload', formData)
  }