Laravelからs3に画像をUP~画像からUP編~

Laravelからs3へ画像ファイルをアップロードする情報はqiitaなどで沢山あるので、そちらを参考に頂けると良いと思います。

今回は、画像からs3へアップロードする方法を紹介します。
画像から??という方もいるかと思います。
一般的にs3のアップロードで使用する方法は、HTMLのFormからファイルをPostして、そのファイルデータ(画像が多いと思いますが)をs3へアップする方法だと思います。

この場合、 <画像>ではなくて<画像ファイル>に変換しております。

つまり、今回ご紹介するのは、
画像を一度画像ファイルへ変換して、s3にアップロードする方法です。

まずは、画像ファイルをそのままアップロードする、最小コードです。

$filename = Storage::disk('s3')->putFile('s3のファイルディレクトリ', $request->file('image'), 'public'); 

※下記実行済みが前提
・$request->file(‘image’)で、画像ファイルがpostされてくること
・.envの処理、composerでライブラリインストールなどは実行済み

上記と同じように画像をアップロードしようとします。

$filename = Storage::disk('s3')->putFile('s3のファイルディレクトリ', $image, 'public'); 

$imageは画像です。
こうすると下記のerrorが発生します。

 Command (HashName) is not available for driver (Gd). 

errorの内容は、
ファイルの形式が扱えない形式であるということです。

画像を、画像ファイル形式へ変換してあげます。

$filename = Storage::disk('s3')->putFile( 's3のファイルディレクトリ' , new File($save_path), 'public');  

$save_path は、storage上のpathです。
storageにある画像を指定しております。