react + PHP+axios数据传输——文件上传处理
很久没写博客了,断更很久继续记录自己的开发经历。
这次是自己开发的一个小项目记录,技术栈用的是react+PHP+MySql,请求方式用的axios,之前从来没用过react+PHP的组合,主要是最为一个前端程序员Java有点忘记了,PHP还记得点,这里就用了PHP,好了废话不多说。
这次主要的问题是在使用react和PHP的时候,发现使用axios提交的时候上传的文件接收不到,之前用PHP都是和HTML+JS,之前的传递都是通过表单直接跳转到PHP文件来处理。用react只能是将PHP处理成接口来处理。PHP在接收表单的时候直接通过POST和GET就能拿到数据。
在处理react传输的数据时就不能通过这种方式。我也不知道为什么
首先前端,react这里要模拟一个表单数据,直接创建FormData对象就可以了,上传过程将axios的头设置成表单的模式
const formData = new FormData();
formData.append('video', this.state.video); // 上传文件
formData.append('title', '上传文件');
axios.post('http://localhost/uploadVideo.php',formData,{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
你们是不是以为PHP直接用POST就能拿到数据,那是不行的。
看一下后端代码,前端传递了一个title和文件,通过POST我们只能拿到title数据,并不能拿到上传文件。后端还是要利用$_FILES函数才能拿到数据。
$_Data = json_encode($_POST);
$_Data = json_decode($_Data,true);
$upFile = $_FILES['video'];
,这种方式是我试了好几次才能通的方法。作为一个前端我觉得我的后端技术真是太差了,对于那些PHP大佬来说这应该是个很小的问题吧。我觉得我的PHP技术入门都不够,如果有哪位大佬知道原因,请给我留言告知,万分感谢!