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にある画像を指定しております。