Laravel ファイルアップロード実装手順

2021年8月27日

どんな記事?

フォームを使ってファイルをアップロードする機能をLaravelで実装します。

例によって

php artisan serve

を行ってローカル環境で構築します。
サーバーが立ち上がったのでhttp://127.0.0.1:8000/ をルートとします。

今回のアップロード用フォームのURL

http://127.0.0.1:8000/upload

に構築することを前提で記事を書きます。

コントローラーの作成

まずはUploadControllerを作成します。

$ php artisan make:controller UploadController
Controller created successfully.

コントローラが出来たら開きます。

今回はアップロードされたファイルを/uploadfile/内に格納する方法を取ります。
ファイル名はアップロードされた時点でのファイル名をそのまま活かします。

file('file')->getClientOriginalName();
        $request->file('file')->storeAs('/uploadfile/' ,$file_name);
    }
    return view('index'); //ここに関しては遷移したいページを書いておく
}

この様に書き換えてください。

getClientOriginalName();でアップロード時のファイル名をそのまま活かすことが出来ます。

Viewの作成

続いてフォーム部分を作っていきます。

/resources/views 内にindex.blade.php を作成します。(手動です)

{{ csrf_field() }}

これで充分です。
ファイルアップロードを扱うのでenctype="multipart/form-data"は必須です。

ルーティング

この表現であっているのかわかりませんがコントローラーとビューを繋げていきます。
/routes/web.phpを開きます。

//アップロードテスト
Route::resource('/upload', 'UploadController');

のように追加してください。

http://127.0.0.1:8000/upload にアクセスしてテストしてみましょう。
動くはずですが駄目な場合はコメントください。

アップロードしたファイルにアクセス出来るようにする

 php artisan storage:link

をしておけば

http://127.0.0.1:8000/storage/upload/xxxx.pdf

などにアップできます。
storage/app/public/ 以下のディレクトリでないとアクセス出来ないので注意。

ご協力お願いします

Laravel

Posted by bistro