Laravel5.7 アップロード

投稿者: | 2019/09/26

多少の設定はあるものの基本的にはフロントエンドとバックエンドをちょこっと実装してやれば動かせた。

フロントエンド

formタグのenctype要素を”multipart/form-data”にする。
inputタグのtype要素をfileとすることでファイルを選択できる。

<form method="post" enctype="multipart/form-data" action="{{url('/upload')}}">
    <input type="file" id="file" name="file" class="form-control">
    <button type="submit" class="btn btn-primary m-1">アップロード</button>
    {{ csrf_field() }}
</form>

バックエンド

ルート

特別なことはない

Route::post("/upload", "UploadController@upload");

コントローラー

$request->file(‘file’)でUploadedFileクラスを取得できるのでそのメソッドからファイルに関して情報を得られる。
UploadedFile

storage/app/tmpフォルダにデータを保存するときは以下のような感じ。
tmpフォルダがなくても勝手に作ってくれるようだ。

$filename = $request->file('file')->getClientOriginalName();
$request->file('file')->storeAs('tmp', $filename);

AWSのS3に保存するときは第3引数をS3とするが、あらかじめ.envに設定が必要となる。
他クラウドを使うときはconfig/filesystems.phpを編集する。

$request->file('file')->storeAs('tmp', $filename, 's3');

.envの設定

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION
AWS_BUCKET
AWS_URL

関連するサイト

アップロードファイルの保存(Laravel5.7日本語サイト)

UploadedFileクラス(githubへ)


コメントを残す

メールアドレスが公開されることはありません。