最近项目做了OCR,那图片传输的格式需要以form-data文件的格式传输,移动端调用原生方法获取图片信息,只能拿到base64编码,所以需要通过格式转换成文件流的格式去提交。
base64转File
/**
* base64ToFile base64转文件
* @param {String} urlData base64编码参数
*/
function base64ToFile(baseData) {
let arr = baseUrl.split(',');
let type = arr[0].match(/:(.*?);/)[1]; // 解锁图片类型
let bytes = atob(arr[1]); // 解码base64
let n = bytes .length
let bufferArray = new Uint8Array(i);
while (n--) {
bufferArray[n] = bytes.charCodeAt(n);
}
return new File([bufferArray ], { type: type });
}
以form-data格式上传
form-data
格式需要注意的是头信息中Content-Type
需设置为 multipart/form-data
。
/**
* uploadImg OCR上传识别图片
*/
function uploadImg (baseData) {
let file = base64ToFile(baseData)
let formData = new FormData()
formData.append('file', file)
let url = `/api/test`
return formDataHttp.post(url, formData) // formDataHttp是`multipart/form-data`的axios实例。
}
网友评论