我正在开发一个应用并试图将base64中的图像上传到我的服务器。通过网络测试代码完美无缺!当我将base64中的图像转换为File时,它会返回以下对象:
但是当我尝试在Android设备上运行的移动应用程序中做同样的事情时,相同的代码会向我创建以下File对象:
发生了什么事?我调用该函数将我的base64图像转换为File:
var blob = new Blob([photoBase64], {type: 'image/png'});
var filePhoto = new File([blob], "employeePhoto.png");
在第一张图片(有效)中,我在网络浏览器上运行。 在第二张图片(没有工作)我在Android应用程序上运行。 这是相同的代码...
看起来File构造函数在Web浏览器和Android应用程序中有不同的行为。我不明白这一点。将参数以相同的顺序传递给File构造函数会创建不同的File对象(如图中所述)。
答案 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;