【发布时间】:2016-08-18 22:30:40
【问题描述】:
我尝试了互联网上的所有解决方案,但都没有成功。
我可以使用 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
【问题讨论】:
-
我不是角度用户。但是如果他们支持它,你检查过角度文档吗?
-
我在角度文档中找不到有关发送数据和图像上传的任何信息。但我敢肯定它已经被弄脏了。我只是想知道旧版本的角度是否支持这种方法。我用的是 1.5 还是不行。但这些帖子是 2015 年的。没那么老了 :)
标签: javascript php angularjs multipartform-data