LoginSignup
0
1

More than 3 years have passed since last update.

【Laravel】ファイルをアップロードしたい

Posted at

アップロードフォームの作成

index.balde.php
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form method="POST" action="/upload" enctype="multipart/form-data">
        {{ csrf_field() }}
    <input type="file" id="file" name="file" class="form-control">
    <button type="submit">アップロード</button>
    </form>
</body>
</html>

引用:Laravelでファイルをアップロードする方法を詳細解説

ポイント

ファイルアップロード時はenctype=”multipart/form-data”を必ず指定する

ルート情報

通常表示のために適当にアドレスを書く

Route::get('/','コントローラ名@index');

アップロードファイルの受け取り

    function store(Request $request)
    {
        print_r($request->all());
    }

引用:Laravelでファイルをアップロードする方法を詳細解説

また以下のように書けばファイルのみを見ることができる

print_r($request->file('file'));

fileメソッドの引数としてfileが入っているのはフォームのinput要素のnameプロパティに設定している値。

ルート情報

このメソッドを書いたらpost送信されるときに呼ばれるようにルート情報を書く

Route::post('/','コントローラ名@store');

アップロードされたファイルの保存

public function store(Request $request){

   $request->file('file')->store('');

}

引用:Laravelでファイルをアップロードする方法を詳細解説

名前をつけて保存

パスとファイル名、ディスク名を指定して好きな名前をつけられる

$request->file('file')->storeAs('','image.jgp');

引用:リクエストの取得

複数ファイルのアップロード

input要素を以下に修正

index.blade.php
<input type="file" id="file" name="file[]" class="form-control" multiple>

変更点は以下の2つ

  • nameを"file"から"file[]"に変更
  • multipleを追加

受け取り

前と同じで$request->file('file')で受け取れ、配列となっている。

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1