繁体   English   中英

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

[英]Base64 image upload in Web but not upload in device Cordova

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

在此处输入图片说明

但是,当我尝试在运行于Android设备上的移动应用程序中进行相同操作时,相同的代码为我创建了以下File对象:

在此处输入图片说明

怎么了? 我这样调用该函数将base64图像转换为File:

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

在第一个图像(有效)中,我在Web浏览器上运行。 在第二张图片(无效)中,我正在Android应用程序上运行。 这是相同的代码...

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

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

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM