Laravelで画像をアップロードしたいのですが、アップロード方法がわかりません。
ウェブを色々見てきましたが、アップロードする方法が全くわかりません。
PHP
1 $filename = $req->file->store('public');
↑上の関数の意味もできたら教えていただきたいです。
HomeController.php
PHP
1namespace App\Http\Controllers; 2use Illuminate\Support\Facades\Auth; 3use App\Http\Controllers\DB; 4use Illuminate\Http\Request; 5use App\Post; 6class HomeController extends Controller 7{ 8 /** 9 * Create a new controller instance. 10 * 11 * @return void 12 */ 13 public function __construct() 14 { 15 $this->middleware('auth'); 16 } 17 18 /** 19 * Show the application dashboard. 20 * 21 * @return \Illuminate\Contracts\Support\Renderable 22 */ 23 public function index() 24 { 25 $vals = Post::latest()->get(); 26 return view('home',['val'=>$vals]); 27 } 28 29 public function getpost(Request $req){ 30 31 } 32 33 public function editevent(){ 34 $vals = Post::where('type','event')->latest()->get(); 35 return view('edit.event',['val'=>$vals]); 36 37 } 38 public function editedit($id){ 39 40 } 41 42 public function posting(){ 43 return view('msg.create'); 44 } 45 46 public function getnewPost(Request $req){ 47 $post = new Post(); 48 $this->validate($req,[ 49 'title'=>"required", 50 'text'=>"required|min:3", 51 'type'=>"required", 52 'file'=>"required|image" 53 ]); 54 if($req->hasFile('file')){ 55 if ($req->file('file')->isValid()) { 56 $filename = $req->file->store('public'); 57 $post->file=$filename; 58 $post->title=$req->title; 59 $post->body=$req->text; 60 $post->type=$req->type; 61 62 $post->save(); 63 }else{ 64 return redirect() 65 ->back() 66 ->withInput() 67 ->withErrors(); 68 } 69 70 }else{ 71 echo "file not found"; 72 } 73}
create.blade.php
PHP
1@extends('layouts.app') 2 3@section('content') 4<div class="container"> 5<div class="card text-white bg-dark mb-11" > 6 <div class="card-header">お知らせの編集</div> 7 <div class="card-body"> 8 <h5 class="card-title"></h5> 9 <p class="card-text"> 10 <div class="row justify-content-center" style="margin-bottom:5px;"> 11 <div class="col-md-11 text-dark"> 12 <div class="card"> 13 <div class="card-header">新規投稿</div> 14 15 <div class="card-body"> 16 <form action="{{url('/get/newpost')}}" method="post"> 17 <div class="form-group"> 18 <label for="exampleInputEmail1">タイトル</label> 19 <input type="text" class="form-control" id="exampleInputEmail1" name="title" aria-describedby="emailHelp" placeholder="タイトル"> 20 <small id="emailHelp" class="form-text text-muted"></small> 21 </div> 22 <div class="form-group"> 23 <label for="inputState">カテゴリ</label> 24 <select id="inputState" class="form-control" name="type"> 25 <option selected value="event">イベント</option> 26 <option value="calendar">休業日</option> 27 <option value="other">その他</option> 28 </select> 29 </div> 30 <div class="form-group"> 31 <label for="exampleFormControlFile1">画像選択</label> 32 <input type="file" class="form-control-file" id="exampleFormControlFile1" name="file"> 33 </div> 34 <div class="form-group"> 35 <label for="exampleFormControlTextarea1">本文</label> 36 <textarea class="form-control" id="exampleFormControlTextarea1" rows="10" name="text"></textarea> 37 </div> 38 39 <button type="submit" class="btn btn-primary">投稿する</button> 40 {{csrf_field()}} 41</form> 42 </div> 43 </div> 44 </div> 45 </div> 46 </p><!--Dark card end--> 47 </div> 48 49</div> 50@endsection
form概要
カテゴリ | name | Type |
---|---|---|
タイトル | title | text |
カテゴリ | type | select |
画像選択 | file | file |
本文 | text | textarea |
その他
command
1$ php artisan storage:link
上記のコマンドは実行済みです。
プログラムの流れ
プログラムの流れは、
入力ページ(create.blade.php)
↓
データ受付(HomeController.php[getnewPost()]
流れ的には確認画面無しでアップロードしたいと考えています。
Laravel初心者ですがよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー