base64转blob,文件格式不合法

当前将裁剪后的base64图片转为blob,然后上传到后端,但接口返回文件格式不合法
后端解析的时候,发现这个blob的文件名并不是我当时设置的名字,格式后缀也没有了(大概就是file-d8q3uiaehdfj这样子)。
请问有人知道是怎么回事吗??

file对象也没有问题

base64转blob,文件格式不合法

相关代码

base64转blob,文件格式不合法

回答

这个不是转成 url 吗?传给后端应该直接用 new Blob([u8arr], {type: mime})

一般上传给后端的都是用 formData 上传的 file 吧:

// 上传文件

async saveFile() {

let formData = new FormData();

formData.append('file', this.base64ConvertFile(this.base64Src, 'poster'));

let config = {

headers: {'Content-Type': 'multipart/form-data'},

}

const res = await this.axios.post('/api/upload/file', formData, config).then(({status, data})=> {

if (data.status == 200) {

//TODO::

return true;

} else {

this.$toast(data.errmsg);

}

return false;

});

return res;

},

base64ConvertFile(urlData, filename) { // 64转file

if (typeof urlData != 'string') {

this.$toast("urlData不是字符串")

return;

}

var arr = urlData.split(',')

var type = arr[0].match(/:(.*?);/)[1]

var fileExt = type.split('/')[1]

var bstr = atob(arr[1])

var n = bstr.length

var u8arr = new Uint8Array(n)

while (n--) {

u8arr[n] = bstr.charCodeAt(n);

}

return new File([u8arr], `${filename}.${fileExt}`, {type});

},

以上是 base64转blob,文件格式不合法 的全部内容, 来源链接: utcz.com/a/65611.html

回到顶部