七牛上传base64图片 putb64 axios 版本的实现
七牛使用base64图片的形式上传,查看七牛原文,对其上传代码使用axios
的进行了实现。
function qiniuUploadBase64 (dataUrl, saveKey = '', isFullName = false) {
let baseStr = dataUrl.split(',')[1]
const eqTagIndex = baseStr.indexOf('=')
const baseSizeStr = eqTagIndex !== -1 ? baseStr.substring(0, eqTagIndex) : baseStr
const strLen = baseSizeStr.length
const fileSize = parseInt(strLen - (strLen / 8) * 2, 10) // fileSize 可直接写为 -1,省去计算步骤
return axios
.post(`https://upload.qiniup.com/putb64/${fileSize}/key/${btoa(makeSaveKey(saveKey, isFullName))}`, baseStr, {
headers: {
'Content-Type': 'application/octet-stream',
Authorization: 'UpToken ' + mkToken(saveKey, isFullName)
}
})
}
有两点需要注意
fileSize
设置为-1
其实更为方便- post请求的
url
中,携带了key
参数,这样能保证覆盖上传而不返回错误