Laravel : Canvas Data を Laravel Storage にアップロードする

環境:

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 等のパーミッションの設定については下記参照

stackoverflow.com

docs.aws.amazon.com

ref:

laracasts.com

am-yu.net

 

PHPフレームワーク Laravel実践開発

PHPフレームワーク Laravel実践開発