JavaScript js判斷base64大小

最近做前端時(shí),遇到后臺(tái)接口限制上傳的base64大?。ǔ^8M時(shí)直接報(bào)錯(cuò)了),后臺(tái)表示要限制大小,如果圖片太大需要進(jìn)行提示(我心想,難道不是后臺(tái)沒好好返回結(jié)果的錯(cuò)嗎?)。但是實(shí)際上前端也是需要判斷一下的,圖片太大上傳時(shí)體驗(yàn)也不好。
示例代碼:

    /**
     * base64圖片大小
     * @param {string} str 
     */
    static getImgSize(str) {
        // 帶上前綴時(shí)需去掉前綴
        // str = str.replace('data:image/png;base64,', '');
        if (str instanceof String) {
            var strLength = str.length;
            var fileLength = parseInt(strLength - (strLength / 8) * 2);
        
            // 由字節(jié)轉(zhuǎn)換為KB
            var size = "";
            size = (fileLength / 1024).toFixed(2);
            // 由字節(jié)轉(zhuǎn)換為MB
            size = (fileLength / 1024 * 1024).toFixed(2);
        
            return parseInt(size);
        }
        return parseInt(0);
      }

但這個(gè)結(jié)果和瀏覽器控制臺(tái)顯示的大小有一定差別,瀏覽器顯示18.2M的base64字符串,該函數(shù)只返回了7M。我根據(jù)這個(gè)比例又在判斷時(shí)調(diào)整了一下大小,判斷當(dāng)返回大于3M才能上傳,不過實(shí)際base64肯定是大于3M的。技術(shù)不足,目前只能通過這種方式曲線救國(guó)了。

?著作權(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)容

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 10,586評(píng)論 0 13
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,826評(píng)論 1 45
  • 27、移動(dòng)端響應(yīng)式布局開發(fā) 響應(yīng)式布局開發(fā) 1、什么是響應(yīng)式布局開發(fā)?把我們開發(fā)完成的產(chǎn)品,能夠讓其適配不同的設(shè)備...
    萌妹撒閱讀 1,208評(píng)論 0 0
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,674評(píng)論 1 32
  • @轉(zhuǎn)自GitHub 介紹js的基本數(shù)據(jù)類型。Undefined、Null、Boolean、Number、Strin...
    YT_Zou閱讀 1,329評(píng)論 0 0

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