目前我正在使用 Ionic 开发面部识别应用程序。我正在使用 Microsoft 的Face API。
我的问题是我不断得到Error 400: Decoding error, image format unsupported.
在做了一些研究之后,我遇到了这个链接
引用开始,
提交二进制有效负载时,不应对其进行 base64 编码。这是您可能会做的事情..
URI uri = builder.build();
HttpPost request = new HttpPost(uri);
request.setHeader("Ocp-Apim-Subscription-Key", "...");
File file = new File("...");
FileEntity reqEntity = new FileEntity(file, ContentType.APPLICATION_OCTET_STREAM);
request.setEntity(reqEntity);
引用 END
使用 Ionic/AngularJS,使用 Device Camera 捕获的图像或从 Image Gallery 中选择的图像以 base64 字符串的形式返回。因此,我寻找使用此要点将数据解码为二进制的方法,但仍然失败。
这是我进行 API 调用的控制器代码。
$scope.postToAPI = function () {
// make http call to MS cognitive API
var formData = new FormData();
formData.append('file', $scope.picture);
$http.post($scope.cognitiveServices.endpoint, formData, {
headers: { 'Content-Type': 'application/octet-stream', 'Ocp-Apim-Subscription-Key':$scope.cognitiveServices.apiKey }
}).success(function (data) {
console.log(JSON.stringify(data));
alert("Awesome");
}).error(function (err) {
alert("Fail ->" + err.code + " " + err.message);
console.log("Some error occured");
});
}
我有
- 尝试设置 transform:angular.identity 和 Content-Type: undefined
- 尝试发送没有表单数据的图像(只是随机试验)
- 尝试将 base64 字符串转换为 Uint8 数组(按照这个 SO question的解决方案)
到目前为止,我所有的尝试都失败了。有人可以解释我做错了什么吗?
PS:这是我第一次使用 Ionic 框架。