如何在PHP中获取AJAX提交的FormData里的文本字段与图片?
解决FormData提交后PHP获取文本和图片的问题
一、先修正前端FormData的创建与AJAX发送代码
你当前的FormData创建代码有误,正确写法是传入表单DOM元素而非字符串"form"。用jQuery实现的正确代码如下:
// 获取表单DOM节点(假设表单id为"myForm",也可直接用$('form')[0]匹配第一个表单) var formElement = $('#myForm')[0]; // 基于表单创建FormData对象 var formData = new FormData(formElement); // 发送AJAX请求 $.ajax({ url: '你的PHP接口地址', type: 'POST', data: formData, // 必须设置这两个参数,否则FormData无法正确传递 processData: false, contentType: false, success: function(res) { console.log(res); } });
二、PHP中获取文本字段与图片
FormData提交后,文本字段数据会存入$_POST数组,上传的图片会存入$_FILES数组,无需通过$_POST['formData']获取。
1. 获取文本字段
假设表单内文本字段的name属性为user_name,直接通过$_POST取值:
$userName = $_POST['user_name'];
2. 获取上传的图片
假设表单内文件输入框的name属性为user_avatar,通过$_FILES处理:
// 获取图片的基础信息 $imgName = $_FILES['user_avatar']['name']; $imgTmpPath = $_FILES['user_avatar']['tmp_name']; $imgError = $_FILES['user_avatar']['error']; // 验证并保存图片示例 if ($imgError === UPLOAD_ERR_OK) { // 定义保存路径,需确保uploads目录存在且有写入权限 $saveDir = './uploads/'; if (!is_dir($saveDir)) mkdir($saveDir, 0755, true); $savePath = $saveDir . $imgName; // 将临时文件移动到目标路径 move_uploaded_file($imgTmpPath, $savePath); echo "图片上传成功"; } else { echo "图片上传失败,错误码:" . $imgError; }
内容的提问来源于stack exchange,提问作者Xavier
相关产品推荐
相关产品推荐

