目次
Laravelの記事一覧は下記
PHPフレームワークLaravelの使い方
Laravelバージョン
動作確認はLaravel Framework 7.19.1で行っています
前提条件
eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています
Controllerにメソッド追加
(1) /sample/app/Http/Controllers/SampleController.phpにuploadメソッドを追記
public function upload(Request $request)
{
$file = $request->file('a');
if (!is_null($file)) {
date_default_timezone_set('Asia/Tokyo');
$originalName = $file->getClientOriginalName();
$micro = explode(" ", microtime());
$fileTail = date("Ymd_His", $micro[1]) . '_' . (explode('.', $micro[0])[1]);
$dir = 'upFiles';
$fileName = $originalName . '.' . $fileTail;
$file->storeAs($dir, $fileName, ['disk' => 'local']);
}
return view('sample.upload');
}
Request#fileメソッドでアップロードされたファイルを取得できます
storeAsメソッドでstorage/app配下にファイルを保存できます
storeAsメソッドの第一引数はstorage/app配下の保存先ディレクトリを指定します
storeAsメソッドの第二引数は保存後のファイル名を指定します
storeAsメソッドの第三引数はconfig/filesystems.php内のdisks配列のkeyをdisk要素で指定します
config/filesystems.php内のdisks配列を見るとわかりますが、そこでファイルの保存先のrootをstorage/app配下に指定しています
(2) /sample/routes/web.phpに下記を追記
Route::post('sample/upload', 'SampleController@upload');
viewの作成
/sample/resources/views/sample/upload.blade.phpファイル作成
<html>
<head>
<title>sample</title>
</head>
<body>
<form action="{{ url('sample/upload') }}" method="post" enctype="multipart/form-data">
@csrf
<input type="file" name="a" >
<input type="submit" >
</form>
</body>
</html>
動作確認
http://localhost/laravelSample/sample/upload
ファイルを選択して
送信ボタンクリック
storage/app配下にupFilesフォルダができて、その中にアップロードしたファイルが格納されました