在开发中遇到了拍摄图片并具有截图功能然后上传图片的需求,使用到了cropperjs 裁剪图片,但是裁剪出的图片都是base64的编码,但是要求发送文件格式的图片,记录一下解决方法。
const base64toFile = (dataUrl) => {
// dataUrl bas64编码
let arr = dataUrl.split(',')
let mime = arr[0].match(/:(.*?);/)[1]
let suffix = mime.split('/')[1]
let bstr = atob(arr[1])
let n = bstr.length
let u8arr = new Uint8Array(n)
let filename = Math.random()
while (n--) {
u8arr[n] = bstr.charcodeAt(n)
}
return new File([u8arr], `${filename}.${suffix}`, {
type: mime,
})
}