我有一个文件数组,我想在php中检索其他一些字符串参数,当我从React中的FormData
发送文件时,它们在php中被作为json接收:
"{"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);
});
}
提前谢谢!
答案 0 :(得分:2)
结果是axios.post()
默认情况下以JSON格式发送所有数据,这就是为什么文件不被解释为php中的File对象的原因,我对发布请求做了一些小的更改,最后我收到了文件,这是更新的代码:
(我现在仅从阵列发送一个文件,但是我很确定这对于文件阵列是相同的过程)
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);
});
答案 1 :(得分:1)
这是您在React中上传多个文件的方式
const dataForm = new FormData();
uploadedFiles.map(file =>
dataForm.append("Files[]", file);
}