ホーム > Laravel > 【Laravel+S3】保存時にユーザー定義のmetadataを保存する方法
Laravel

【Laravel+S3】保存時にユーザー定義のmetadataを保存する方法

いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。

Laravel から S3 に画像を保存するときに metadata として任意のパラメーターを付与する方法についてまとめています。

環境

"league/flysystem-aws-s3-v3": "~1.0",

結論から

use Storage;

classTestController extends Controller
{
    public function store(Request $request)
    {
        $disk = Storage::disk('s3');
        $params = [
            'visibility' => 'public',
            'Metadata' => [
                'x-amz-meta-post_id' => '1'
            ]
        ];  
        $path = $disk->put('test',$request->file('movie'),$params);
        return response()->json(['url'=>$path],200);
    }
}

put を使って、第三引数でパラメータを送るようにします。

そのとき、

        $params = [
            'visibility' => 'public',
            'Metadata' => [
                'x-amz-meta-post_id' => '1'
            ]         
        ]; 

x-amz-meta-

このプリフィックスから始まるように指定します。

これはお作法として、決まり文句であるようです。

管理画面から手動で入力しようとすると、

image36

このようになります。

また、公式のドキュメントにもこのように書いてあります。

おわりに

知っていれば大したことはないのですが、正解を引くのに数時間かかったので参考になればと思います。

次回は、Lambda でこのメタデータ使って RDS に保存するみたいなことをします(記事するかは不明)