Laravel-Adminの管理画面から画像やファイルをアップロードする
Laravel-Adminで管理画面を作ることはよくあるかと思います。
Laravel-Adminから画像やファイルの投稿について調べながら実装したので、メモがてら残しておきたいと思います。
どのディレクトリにアップされるか調べる
config/admin.php
の upload
の部分を見てみます。
僕の場合はこうなっていました。
/*
|--------------------------------------------------------------------------
| Laravel-admin upload setting
|--------------------------------------------------------------------------
|
| File system configuration for form upload files and images, including
| disk and upload path.
|
*/
'upload' => [
// Disk in `config/filesystem.php`.
'disk' => 'admin',
// Image and file upload path under the disk above.
'directory' => [
'image' => 'images',
'file' => 'files',
],
],
diskにはadminを使いますよーっていうことですね。
画像系はimagesディレクトリ、ファイル系はfilesディレクトリにアップロードされるそうです。
adminのdiskはどのように指定されているかみてみます。
config/filesystem.php
を確認してみます。
もしdisksの中にadminがなければ追加してください
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'admin' => [
'driver' =>'local',
'root' => public_path('uploads'),
'visibility' =>'public',
'url' => env('APP_URL').'/uploads',
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
],
],
こちらの内容を見ると管理画面から投稿されるファイルや画像は env('APP_URL').'/uploads'
に保存されるようになっています。
では、早速画像やファイルをアップロードできるようにControllerを書き換えてみます。
AdminのControllerを書き換える
php artisan admin:make UserController --model=App\\Models\\User
このようにすると管理画面用のControllerが作成されます。このformの部分を書き換えます。
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new User());
.
.
.
$form->image('profile_image_path', 'プロフ画像')->uniqueName();
.
.
.
return $form;
}
僕はファイル名が被らないように uniqueName
をつけてファイル名をユニークなものに変えるようにしました。
ディレクトリを変えたい場合は $form->image('profile_image_path', 'プロフ画像')->move('profiles')->uniqueName();
のようにプロフィールディレクトリを切ってそこに格納することもできます。
終わりに
Laravel-Adminの管理画面から画像をアップロードするのは結構簡単でした。
あまり2次情報・3次情報は豊富にはないので、Larave-Adminの公式ドキュメントを見て試すのが一番いいですね。
Discussion