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-
このプリフィックスから始まるように指定します。
これはお作法として、決まり文句であるようです。
管理画面から手動で入力しようとすると、
このようになります。
また、公式のドキュメントにもこのように書いてあります。
おわりに
知っていれば大したことはないのですが、正解を引くのに数時間かかったので参考になればと思います。
次回は、Lambda でこのメタデータ使って RDS に保存するみたいなことをします(記事するかは不明)