You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么AngularJS $http.post提交文件时PHP端接收不到任何数据

你遇到的问题由三处错误共同导致,对应修改方案如下:

错误1:AngularJS $http.post 参数结构错误

$http.post的参数顺序为请求地址 > 请求体数据 > 全局配置项,你之前把headers配置错误写到了请求体参数中,同时缺少配置阻止AngularJS自动序列化FormData对象。
修改后的myPostr工厂代码:

application.factory('myPostr', function($http){
    return function (data, callback) {
        $http.post('api/', data, {
            headers: {'Content-Type': undefined},
            transformRequest: angular.identity
        }).then(function(res){
            callback(res.data);
        })
    }
});

错误2:前后端文件字段名不匹配

你在FormData中append的文件字段名为form,但PHP中尝试读取$_FILES['file'],字段名不对应导致读取失败,二选一修改即可:

  • 前端调整append字段名:form.append('file', element[0].files[0])
  • 后端调整读取字段:isset($_FILES['form'])

错误3:PHP端数据解析逻辑错误

文件上传使用的multipart/form-data请求格式不是JSON,用json_decode解析php://input必然返回空。PHP会自动解析该格式的请求到$_FILES和$_POST全局变量,不需要手动读取输入流。
修改后的PHP测试代码:

header('Content-Type: application/json');
echo json_encode($_FILES);

附加排查项

如果修改后仍无法正常接收,检查以下配置:

  • php.ini中upload_max_filesize、post_max_size配置值大于上传文件大小
  • PHP对临时文件目录、上传目标目录拥有读写权限

内容的提问来源于stack exchange,提问作者Vlad Buștiuc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:57:02