在Web上上传Base64图像但不在设备Cordova中上传

时间:2016-04-29 00:53:21

标签: javascript angularjs cordova ionic-framework

我正在开发一个应用并试图将base64中的图像上传到我的服务器。通过网络测试代码完美无缺!当我将base64中的图像转换为File时,它会返回以下对象:

enter image description here

但是当我尝试在Android设备上运行的移动应用程序中做同样的事情时,相同的代码会向我创建以下File对象:

enter image description here

发生了什么事?我调用该函数将我的base64图像转换为File:

var blob = new Blob([photoBase64], {type: 'image/png'});
var filePhoto = new File([blob], "employeePhoto.png");

在第一张图片(有效)中,我在网络浏览器上运行。 在第二张图片(没有工作)我在Android应用程序上运行。 这是相同的代码...

看起来File构造函数在Web浏览器和Android应用程序中有不同的行为。我不明白这一点。将参数以相同的顺序传递给File构造函数会创建不同的File对象(如图中所述)。

1 个答案:

答案 0 :(得分:0)

如果您尝试将base64转换为File,则可以使用canvas.toBlob() polyfill的一部分

var base64 = "data:image/png,base64,"; // data URI

var binStr = atob(base64.split(",")[1]),
  len = binStr.length,
  arr = new Uint8Array(len);

for (var i = 0; i < len; i++) {
  arr[i] = binStr.charCodeAt(i);
}

var file = new File([arr], "image");

var img = new Image;
img.onload = function() {
  document.body.appendChild(this);
  URL.revokeObjectURL(url);
}

var url = URL.createObjectURL(file);
img.src = url;