我正在使用cordovaCamera插件来获取相机图像。这个方法我得到的图像为Camera.DestinationType.DATA_URL(即Data.URL)。我需要将Data.URL转换为File对象。我需要传递这个文件对象进入$ http.post方法。任何人都给出了解决这个问题的建议。
答案 0 :(得分:0)
第1步:
使用&data;数据附加DATA_URL:image / jpeg; base64,'在你的相机;成功的回调。
$cordovaCamera.getPicture(options).then(function(data) {
var imgURI = 'data:image/jpeg;base64,' + imageData;
convertToBlob(imgURI);
}, function(err) {
});
第2步
将数据转换为blob
function convertToBlob(imgData){
var byteString = atob(imgData.split(',')[1]);
var mimeString = imgData.split(',')[0].split(':')[1].split(';')[0];
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++)
{
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ab], { 'type': mimeString });
}
第3步
blob是没有名称的文件。所以只需附加那个,你就有了一个文件
我猜您使用FormData将图像发送到后端?如果是,那么这样做:
var fdata = new FormData();
// blob is the output from the convertToBlob method
fd.append('file', blob, 'a.jpg');