環境:
Laravel@6.18.35
HTMLCanvasElement.toDataURL()でフロントから送られたデータのサーバー側の処理に関して。
//ヘッダに「data:image/png;base64,」が付いているので、それは外す
if (preg_match('/data:image\/(gif|jpeg|png);base64,(.*)/i', $product['dataImage'], $matches)) {
$imageType = $matches[1];
//残りのデータはbase64エンコードされているので、デコードする
$imageData = base64_decode($matches[2]);
//まだ文字列の状態なので、画像リソース化
$image = imagecreatefromstring($imageData);
$filename = md5($imageData) . '.' . $imageType;
imagepng($image, public_path('storage/UPLOAD_DIRECTORY/' . $filename));
>>> Storage ファサードが使えないので(imagepngを使う必要があるため)、public_path('/storage~~')でパスを指定する必要がある。
}
storage directory 等のパーミッションの設定については下記参照
ref: