小程序嵌套的h5页面,使用JsSdk接口上传图片:
在ios下,通过wx.getLocalImgData获取图片的base64数据,想把base64转成File对象上传到本地的ftp服务器上,发现上传后的文件大小为0kb.
不知道是不是转换后的file对象有问题?
wx.getLocalImgData({
localId: res.localIds[i], // 图片的localID
success: function (res) {
let localData = res.localData // localData是图片的base64数据,可以用img标签显示
//iOS 系统里面得到的数据,类型为 image/jgp,因此需要替换一下
localData = localData.replace('jgp', 'jpeg')
let newFile=_this.dataURLtoFile(localData,i+'.jpg')
newFile.src = localData
_this.transformSingleFile(_this.doctor.id,newFile,'2')
}
})
dataURLtoFile(dataurl,filename){
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename, {type:mime});
}
localData = localData.replace('jgp', 'jpeg')
这个是jpg还是jgp
可以尝试如下方案,先转blob,再转file
/**
* 将base64转换为blob
*/
public dataURLtoBlob(dataurl) {
var arr = dataurl.split(","),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], {
type: mime,
});
}
/**
* 将blob转换为file
*/
public blobToFile(blob, fileName) {
blob.lastModifiedDate = new Date();
blob.name = fileName;
return blob;
}
我也是想要file对象..但是控制台报的File is not undefined,,,,估计连File都给阉割掉了...?
你好。请问你的sdk还可以用getLocalImgData吗
没
你好,请问解决了吗