【问题标题】:php size of base64_encode string - filebase64_encode 字符串的 php 大小 - 文件
【发布时间】:2011-03-21 03:30:06
【问题描述】:

我想知道如何知道 base64_encoded 字符串的文件大小?例如:

$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
       . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
       . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
       . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data = base64_decode($data);

谢谢

【问题讨论】:

    标签: php filesize


    【解决方案1】:
    strlen(base64_decode($encoded_data));
    

    作为一个粗略的经验法则,base64 编码将原始数据的大小增加了大约 33%

    【讨论】:

    • 这是工作代码
    【解决方案2】:

    如果您想知道大小而不需要解码,我相信以下工作:

    $size = (int) (strlen(rtrim($data, '=')) * 3 / 4);
    

    或者:

    $size = (strlen($data) * 3 / 4) - substr_count(substr($data, -2), '=');
    

    否则,只需按照建议对解码数据使用strlen() 作为 Marc。

    【讨论】:

      【解决方案3】:

      试试这个,它也给你字节、KB 和 MB 的大小..

      public function getBase64ImageSize($base64Image){ //return memory size in B, KB, MB
          try{
              $size_in_bytes = (int) (strlen(rtrim($base64Image, '=')) * 3 / 4);
              $size_in_kb    = $size_in_bytes / 1024;
              $size_in_mb    = $size_in_kb / 1024;
      
              return $size_in_mb;
          }
          catch(Exception $e){
              return $e;
          }
      }
      

      【讨论】:

        【解决方案4】:

        使用以下代码:

        function getFileSizeInKb($base64string){
            $bytes = strlen(base64_decode($base64string));
            $roughsize = (((int)$bytes) / 1024.0)* 0.67;
            return round($roughsize,2);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-31
          • 1970-01-01
          • 1970-01-01
          • 2015-01-04
          • 2019-08-04
          • 2017-11-27
          相关资源
          最近更新 更多