[英]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.