问题
在UC移动端浏览器
- 先canvas画图然后后Base64格式再转Blob接着转File,最后Formdata包装后,上传数据缺失问题,导致传给阿里云后获取的新url无法打开,但在其他浏览器无此问题!
- 单纯使用ant.design的Upload组件,拿到数据Formdata包装后,是可以上传的!
在UC移动端浏览器抓包结果
在谷歌浏览器抓包结果
大胆猜测
Bolb或者File兼容,或者UC的底层问题(主要问题),问题我通过下面的代码,在uc移动端上能正常显示照片, 大佬们这种问题有什么解决方法呀?
// canvas生成的代码base64
const info: any = dataURItoBlob('data:image/png;base64,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');
const url = URL.createObjectURL(info);
const img = document.createElement('img');
img.src = url;
document.body.appendChild(img);
代码
1.合成文字和图片
/**
* @desc 合成文字和图片
* 为配合店铺平台拍卖h5以及商户端h5、pc的场次尺寸 特此使用220*180的2倍默认图 test size 48px
* 后续如有其他合成需按需求进行图片和文字的大小调整
* https的图需要支持跨域,同时在canvas里设置img.crossOrigin = 'Anonymous';
*/
export async function combineTextWithImg({ text, src, createFile }: { text: string; src?: any; createFile?: boolean }) {
console.log('isWinOrNotMac', isWinOrNotMac);
const preCanvas = document.getElementById('Create_Img_with_text') as HTMLCanvasElement;
const preDefaultImg = document.getElementById('Create_Img_default') as HTMLImageElement;
let canvas = preCanvas;
let img = preDefaultImg;
const needLoadImg = !preDefaultImg || src;
if (needLoadImg) {
img = new Image();
if (!src) {
img.id = 'Create_Img_default';
}
img.src = src || require('@/assets/defaultSession.png');
img.crossOrigin = 'Anonymous';
document.body.appendChild(img);
img.style.display = 'none';
}
if (!preCanvas) {
canvas = document.createElement('canvas');
canvas.id = 'Create_Img_with_text';
document.body.appendChild(canvas);
canvas.style.display = 'none';
}
const afterLoad = () => {
canvas.width = img.width;
canvas.height = img.height;
ctx?.clearRect(0, 0, canvas.width, canvas.height);
ctx?.drawImage(img, 0, 0, canvas.width, canvas.height);
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
ctx!.font = '600 112px 苹方-简,微软雅黑,黑体-简,冬青黑体简体中文,华文黑体,黑体';
if (isWinOrNotMac) {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
ctx!.font = '800 108px 苹方-简,微软雅黑,黑体-简,冬青黑体简体中文,华文黑体,黑体';
}
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
ctx!.fillStyle = '#FF4B0A';
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
ctx!.textAlign = 'center';
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
ctx!.textBaseline = 'middle';
// eslint-disable-next-line no-bitwise
ctx?.fillText(text, img.width >> 1, img.height >> 1);
const imgBase64 = canvas.toDataURL();
const final = createFile ? { imgBase64, imgFile: dataURItoBlob(imgBase64) } : imgBase64;
return final;
};
const ctx = canvas.getContext('2d');
const k = await new Promise((resolve) => {
if (!needLoadImg) {
resolve(afterLoad());
}
img.onload = () => {
resolve(afterLoad());
};
});
return k;
}
2.base64转file
/** @desc base64转file 上传接口需要file格式 */
export function dataURItoBlob(base64Data: any) {
try {
let byteString;
const [first, second] = base64Data.split(',');
if (first.indexOf('base64') >= 0) {
byteString = atob(second);
} else {
byteString = unescape(second);
}
const mimeString = first.split(':')[1].split(';')[0];
const byteStringLen = byteString.length;
const ia = new Uint8Array(byteStringLen);
for (let i = 0; i < byteStringLen; i += 1) {
ia[i] = byteString.charCodeAt(i);
}
const blob = new Blob([ia], { type: mimeString });
const file = new File([blob], 'default.png', { type: mimeString });
return file;
} catch (err) {
console.warn('图片生成失败', err);
return false;
}
}
3.上传逻辑
// desc 上传图片
uploading(imgBase64: any) {
const info: any = dataURItoBlob(imgBase64);
const formData = new FormData();
formData.append('file', info, 'default.png');
const opt = { formData, businessCode: `shop-session-like` };
return API.base.uploadImage(opt).then((res: any) => {
return res.fullPath;
});
},