JavaScript js判断base64大小

最近做前端时,遇到后台接口限制上传的base64大小(超过8M时直接报错了),后台表示要限制大小,如果图片太大需要进行提示(我心想,难道不是后台没好好返回结果的错吗?)。但是实际上前端也是需要判断一下的,图片太大上传时体验也不好。
示例代码:

    /**
     * base64图片大小
     * @param {string} str 
     */
    static getImgSize(str) {
        // 带上前缀时需去掉前缀
        // str = str.replace('data:image/png;base64,', '');
        if (str instanceof String) {
            var strLength = str.length;
            var fileLength = parseInt(strLength - (strLength / 8) * 2);
        
            // 由字节转换为KB
            var size = "";
            size = (fileLength / 1024).toFixed(2);
            // 由字节转换为MB
            size = (fileLength / 1024 * 1024).toFixed(2);
        
            return parseInt(size);
        }
        return parseInt(0);
      }

但这个结果和浏览器控制台显示的大小有一定差别,浏览器显示18.2M的base64字符串,该函数只返回了7M。我根据这个比例又在判断时调整了一下大小,判断当返回大于3M才能上传,不过实际base64肯定是大于3M的。技术不足,目前只能通过这种方式曲线救国了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 10,665评论 0 13
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,867评论 1 45
  • 27、移动端响应式布局开发 响应式布局开发 1、什么是响应式布局开发?把我们开发完成的产品,能够让其适配不同的设备...
    萌妹撒阅读 1,209评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,681评论 1 32
  • @转自GitHub 介绍js的基本数据类型。Undefined、Null、Boolean、Number、Strin...
    YT_Zou阅读 1,330评论 0 0

友情链接更多精彩内容