概要
大学の授業でグループワークがあって, 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
で拡張子が得られる