php - 在 ReactJs 中使用 axios 发送 POST 请求时 $_FILES 为空

标签 php reactjs axios

我有一个文件数组,我想在 php 中检索这些文件以及一些其他字符串参数,当我从 React 中的 FormData 发送文件时,它们被作为 json 接收在 PHP 中:

 "{"dataForm":{"Files":[{"path":"aust.jpeg"}]},"headers":{"content-type":"multipart/form-data"}}"

出于显而易见的原因,我想在 $_FILES 中接收它们,是否可以这样做并在 php 中将其余参数读取为 json?此外,我的 php.ini 已完全配置为允许文件上传

这是 Reactjs 代码:

import axios from 'axios';

  const sendMail = (data, uploadedFiles) => {
  const dataForm = new FormData();
  dataForm['Files'] = uploadedFiles; // Here uploadedFiles is an array of files
  console.log(dataForm['Files'])
  axios.post('http://localhost/bickdata/mail/SendMail.php', {
    dataForm,
    headers: {
      'content-type': 'multipart/form-data'
  }
  }) .then(function (response) {
    console.log(response);
  });
}

提前致谢!

最佳答案

事实证明 axios.post() 默认将所有数据作为 JSON 发送,这就是为什么文件在 php 中没有被解释为文件对象的原因,我对 post 请求做了一些小改动,我终于收到了我的文件,这是更新后的代码:

(我现在只从数组中发送一个文件,但我很确定这对一组文件来说是相同的过程)

  dataForm.append( 
    "potato", 
    uploadedFiles[0], 
    uploadedFiles[0].name 
  ); 

  axios({
    method: 'post',
    url: 'http://localhost/bickdata/mail/SendMail.php',
    data: dataForm,
    headers: {'Content-Type': 'multipart/form-data' }
    })
    .then(function (response) {
        //handle success
        console.log(response);
    })
    .catch(function (response) {
        //handle error
        console.log(response);
    });

关于php - 在 ReactJs 中使用 axios 发送 POST 请求时 $_FILES 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62604318/

相关文章:

reactjs - 尝试打印具有数组的对象时出现错误

php - 将txt文件导入Mysql

php - 如何将新版本的 phpmyadmin 安装到服务器上?

ios - 如何在响应所有设备的 native 应用程序中设置 marginLeft 和 marginRight

javascript - 在 Vue js 中使用 axios 会丢失对象的属性

node.js - 尽管使用 CORS,对 expressjs 的 POST 请求仍无法正常工作

Java/PHP - 聊天 session 在窗口刷新或在应用程序中打开新窗口时刷新

php - Unix 时间戳在 PHP 中给出不同的结果

javascript - 在字符串中发送 "&"时遇到问题

reactjs - 为什么组件中的 React Native 函数没有 "function"关键字?