- 将base64格式的图片处理为Blob对象。
function base64ToBlob(base64Data) {
const dataArr = base64Data.split(',');
const imageType = dataArr[0].match(/:(.*?);/)[1];
const textData = window.atob(dataArr[1]);
const arrayBuffer = new ArrayBuffer(textData.length);
const uint8Array = new Uint8Array(arrayBuffer);
for (let i = 0; i < textData.length; i++) {
uint8Array[i] = textData.charCodeAt(i);
}
return [new Blob([arrayBuffer], {type: imageType}), imageType.slice(6)];
}
- 将Blob对象添加到formData对象中。
function toFormData(base64Data) {
const [imageBlob, imageType] = base64ToBlob(base64Data);
const formData = new FormData();
formData.append('file', imageBlob, `${Date.now()}.${imageType}`);
return formData;
}
- http请求头设置为context-type: multipart/form-data上送到文件服务器。
export default function upload(base64Data) {
const formData = toFormData(base64Data);
return new Promise((resolve, reject) => {
httpRequest(formData).then((res: any) => {
resolve(res.data)
}).catch((err) => {
reject(err);
});
});
}