Android 超音速-如何张贴一个图像从手机的相机在一个多部分张贴
好的,下面是问题的概要: 我正在使用AppGyver类固醇和超音速与AngularJS联合开发一个Android混合应用程序,该应用程序的目标是我无法影响的API,不能改变它来解决我的问题 Appgyver超音速提供了一种使用手机摄像头拍照的方法,并为拍照后的结果提供了两个选项-您可以获取拍摄照片的文件url,也可以将照片作为数据url获取 我必须以一个post请求作为API的目标,该请求的表单数据中包含该文件。作为一种解决方案,我尝试将响应字符串加载到blob对象中,方法是将其中间转换为字节数组,然后发布所有这些内容,如下所示:Android 超音速-如何张贴一个图像从手机的相机在一个多部分张贴,android,angularjs,hybrid-mobile-app,steroids,Android,Angularjs,Hybrid Mobile App,Steroids,好的,下面是问题的概要: 我正在使用AppGyver类固醇和超音速与AngularJS联合开发一个Android混合应用程序,该应用程序的目标是我无法影响的API,不能改变它来解决我的问题 Appgyver超音速提供了一种使用手机摄像头拍照的方法,并为拍照后的结果提供了两个选项-您可以获取拍摄照片的文件url,也可以将照片作为数据url获取 我必须以一个post请求作为API的目标,该请求的表单数据中包含该文件。作为一种解决方案,我尝试将响应字符串加载到blob对象中,方法是将其中间转换为字节数
var options = {
allowEdit: true,
targetWidth: 300,
targetHeight: 300,
destinationType: "dataURL",
};
supersonic.media.camera.takePicture(options).then(function (result) {
var imageGotten = result;
var bytes = new Int16Array(imageGotten.length);
for (var i = 0; i < imageGotten.length; i++) {
bytes[i] = imageGotten.charCodeAt(i);
}
var imageToPost = new Blob([bytes], { type: "image/jpeg" });
var formData = new FormData();
formData.append('file', imageToPost);
$http({
url: "API_method_that_is_being_targeted",
method: "POST",
transformRequest: angular.identity,
headers: { 'Content-Type': undefined },
data: formData
})
.success(function (result) {
//further logic
});
});
从发布数据并从服务器获得成功结果的意义上讲,这是正常的。问题是,当我从服务器获取数据时,我收到的图像由于损坏而无法显示。API的管理员向我保证,如果我可以发布一个文件对象,而不是我现在发布的Blob对象,那么这个问题就会得到解决。但是,从我对这个主题的研究中可以看出,File对象可能有点错误,当然,它不能直接用javascript实例化,而只能从文件输入字段中获取,而Blob对象是从File继承的东西,因此,我发布其中一个或另一个都不重要
我有没有遗漏什么?如果有,你有什么建议来解决这个问题。提前谢谢大家。你解决过这个问题吗?尝试做一些类似的事情,不完全是在它工作或不工作的时候,但不清楚为什么你会被腐蚀好的,我的也被腐蚀了,请告诉我你解决了这个问题:DI确实解决了它,但最终通过对API的更改。他们同意添加一个方法,接受数据URI,然后直接解码并保存为图像。是的,我想我也会这么做,我控制API,所以一切都很好。为回应干杯,很高兴你把它整理好了: