如何上傳base64編碼圖片到七牛云

上傳base64編碼圖片到七牛云

我們通常有一個(gè)這樣的需求,我們想 直接將base64 編碼的圖片類型字符串傳上去,然后通過預(yù)覽地址直接可以預(yù)覽為圖片,參照官方的文檔,JS 實(shí)現(xiàn)方式如下:

function putb64(){
  var pic = "填寫你的base64后的字符串";
  var url = "http://upload.qiniup.com/putb64/20264"; //非華東空間需要根據(jù)注意事項(xiàng) 1 修改上傳域名
  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange=function(){
    if (xhr.readyState==4){
      document.getElementById("myDiv").innerHTML=xhr.responseText;
    }
  }
  xhr.open("POST", url, true);
  xhr.setRequestHeader("Content-Type", "application/octet-stream");
  xhr.setRequestHeader("Authorization", "UpToken 填寫你從服務(wù)端獲取的上傳token");
  xhr.send(pic);
}

但通常我們不是直接用 XMLHttpRequest 來上傳,例如大家常用的 axios, 大家上傳通常轉(zhuǎn)換需要注意以下幾點(diǎn):

1、 base64 字符串不是以 data:image/png;base64, 開頭 需要截取后的字符串

2、上傳域名需要注意是你們自己申請(qǐng)桶的地址,如果你上傳報(bào)錯(cuò)官方接口會(huì)返回你真正的地址

下面將最終上傳代碼貼出來

    axios.post('qiniuUrl', base64Data.split(';base64,')[1], {
                headers: {
                  Authorization: `UpToken ${token}`,
                  'Content-Type': 'application/octet-stream',
                },
              })
              .then(res => {}).catch(()=>{})

返回 數(shù)據(jù)格式

{hash: 'Fg_SHS142slWviBsJiEPAjQyApr', key: 'Fg_SHS14slWvi2BsJiEPAjQyApr'}

只需要拿上預(yù)覽地址拼接 key ,例如 https://upload.qiniup.com/Fg_SHS142slWviBsJiEPAjQyApr?imageView2/1/w/300/h/200

需要注意 https://upload.qiniup.com 是你自己申請(qǐng)的預(yù)覽地址,后面參數(shù)拼接的地址可以指定寬高,具體可以參考

官方文檔

大家上傳會(huì)遇到這樣的錯(cuò)fsize is not equal to recevied size 把地址改為 http://up.qiniu.com/putb64/-1 即可。注意域名要是你自己桶的地址。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容