2011-03-21 66 views
6

我想知道如何才能知道base64_encoded字符串的文件大小?例如:PHP的大小base64_encode字符串 - 文件

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

感謝

回答

11
strlen(base64_decode($encoded_data)); 

而作爲一個粗略的規則,base64編碼由約33%

7

如果你想知道的大小不增加尺寸的原始數據解碼,我相信下面的作品:

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

或者:

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

否則,只要使用strlen()作爲Marc建議的解碼數據。

-1

使用下面的代碼:

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

試試這個,給你以字節,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; 
    } 
}