FormData传递至PHP时出错,非文件参数无法通过$_FILES获取
问题原因&解决方案
嘿,我来帮你捋清楚这个问题哈~
核心问题出在PHP对FormData字段的解析规则上:
$_FILES数组专门用来存储通过FormData上传的文件类型数据,也就是你用formData.append('file', { uri: localUri, name: filename, type })添加的这类文件对象;- 而像
formData.append('details', 'Chris')这种普通的文本/字符串字段,PHP会把它解析到$_POST(或者$_REQUEST)数组里,根本不会出现在$_FILES里,所以你用$_FILES['details']自然会报错。
正确的处理方式
你只需要把获取details字段的代码改成从$_POST里取就行:
// 获取上传的文件(这部分你原来的代码是对的) $fileData = $_FILES['file']; // 获取普通文本字段(改成$_POST) $details = $_POST['details']; // 正常返回响应 $this->response(['file' => $fileData, 'details' => $details], REST_Controller::HTTP_OK);
额外补充
如果你的REST框架有特殊的请求解析逻辑,也可以试试用$_REQUEST['details'](它会包含$_POST、$_GET和$_COOKIE的内容),不过优先用$_POST更准确,因为FormData的普通字段默认是通过POST方式提交的。
内容的提问来源于stack exchange,提问作者FabricioG
相关产品推荐
相关产品推荐

