概要
大学の授業でグループワークがあって, base64で送られてきた画像を保存することがあったので, その方法.
やり方
-
base64_decode()でデコード - 拡張子は, MIMEタイプから判断させるか,
/区切りの文字列から得る - あとは適当に保存
サンプル
<?php
$data = file_get_contents('profile.jpg');
$data = base64_encode($data); // これが送られてきたと仮定
$data = base64_decode($data);
// PHP 5.3.0 ~
$mime_type = finfo_buffer(finfo_open(), $data, FILEINFO_MIME_TYPE);
var_dump($mime_type); // string(10) "image/jpeg"
// PHP 7.2.0 ~
$type = finfo_buffer(finfo_open(), $data, FILEINFO_EXTENSION);
var_dump($type); // string(17) "jpeg/jpg/jpe/jfif"
まとめ
-
base64_decode()してfinfo_buffer()を使う - オプションは
FILEINFO_MIME_TYPEでMIMEタイプからゴニョゴニョして拡張子を判定 - PHP 7.2.0以上なら
FILEINFO_EXTENSIONで拡張子が得られる