我在互联网上尝试了所有解决方案,但无法取得成功。
我可以使用Angular JS上传图像文件。但这次我需要额外的值来保存服务器上的图像。我正在尝试发送两个数组。其中一个是文件项,另一个是带文件夹信息的简单发布数据。
subjectDetails.addData = function(post_value){
var defer = $q.defer();
var fd = new FormData();
fd.append('files', post_value.files);
fd.append('data', post_value.data);
//fd.append("data", 'something');
//fd.append("data", JSON.stringify(post_value.data));
$http.post($rootScope.defaultApiPath + '/saveItem', fd, {
withCredentials : false,
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
.success(function(response, status){
defer.resolve(response);
})
.error(function(error, status){
defer.reject(error);
});
return defer.promise;
};
当我发布它时,我可以使用$ _FILES获取图像文件,但$ _POST变量为NULL。
我试过
var_dump($_POST); //NULL
var_dump($_POST['data']); //NULL
var_dump($_FILES); //shows only the file info. The other array is not in it
修改
我找到了原因。问题不在于javascript。我在服务器端使用Slim Framework,而Slim Framewrok无法解析FormData对象。当我尝试将FormData对象发布到一个简单的PHP文件中时,它可以工作。但是使用Slim Framework 3它无法正常工作
我试过
$request->getBody(); //Still NULL
$request->getParsedBody(); //Still Null