base64_encode 字符串的 php 大小 - 文件

Posted

技术标签:

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

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

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

谢谢

【问题讨论】:

【参考方案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);

【讨论】:

以上是关于base64_encode 字符串的 php 大小 - 文件的主要内容,如果未能解决你的问题,请参考以下文章

php base64_encode 如何在java中decode

用PHP对字符串进行Base64编码和解码

php 图片转base4的格式

如何在 PHP 中解析 base64_encode() 的 Json 结果

PHP:base64_encode 是不是可以防止 mysql 注入?

php-base64编码的数据在json_encode之后丢失