質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

748閲覧

Laravelでの画像アップロードについて(validationのエラー)

kuwabaraakinori

総合スコア10

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2020/07/17 11:51

編集2020/07/23 08:45

前提・実現したいこと

Laravelで旅行投稿サイトを制作中です。しかし、フォームで作成した写真が
validateに失敗してエラーメッセージが返されるのでエラーを解消したいと考えております。
stackoverflowで確認してみても解決できず、もう一度teratailで編集して質問でしております。
ご教授いただければ幸いです。

発生している問題・エラーメッセージ

The picture must be an image. The picture must be a file of type: jpeg, png, jpg, gif. The picture must be a file.

該当のソースコード

ContentRequest

1<?php 2 3namespace App\Http\Requests; 4 5use App\Content; 6use Illuminate\Foundation\Http\FormRequest; 7 8class ContentRequest extends FormRequest 9{ 10 /** 11 * Determine if the user is authorized to make this request. 12 * 13 * @return bool 14 */ 15 public function authorize() 16 { 17 18 return true; 19 20 21 } 22 23 /** 24 * Get the validation rules that apply to the request. 25 * 26 * @return array 27 */ 28 public function rules() 29 { 30 return [ 31 'user_id'=>'required', 32 'title' => 'required|string|max:255', 33 'continent' => 'required|string', 34 'picture'=>'required|image|mimes:jpeg,png,jpg,gif|file', 35 'country' => 'required|string', 36 'costs'=>'required|numeric', 37 'span'=>'required|numeric', 38 'content'=>'required|string|max:250', 39 ]; 40 } 41}

ContentController

1public function store(ContentRequest $request) 2 { 3 4 if($request->validated()){ 5 $content =new Content; 6 7 $filename = $request->file('picture')->store('public/picture'); 8 $content->picture = basename($filename); 9 10 $content->user_id = $request->user_id; 11 $content->content = $request->content; 12 $content->title = $request->title; 13 $content->span = $request->span; 14 $content->continent = $request->continent; 15 $content->country = $request-> country; 16 $content->costs = $request->costs; 17 18 $content->save(); 19 } 20 21 return redirect('/'); 22 23 24 25 }

content.create

1@extends('layouts.app') 2@section('content') 3<div class="card"> 4 <div class="card-body"> 5 <form action="{{route('content.store')}}" method="post" enctype="multipart/form-data" > 6 @csrf 7 <div class="form-group"> 8 <label for="exampleFormControlInput1">タイトル</label> 9 <input type="text" class="form-control" id="exampleFormControlInput1" placeholder="旅のタイトル" name="title" > 10 </div> 11 <div class="form-group"> 12 <label for="exampleFormControlSelect1">大陸名</label> 13 <select class="form-control" id="exampleFormControlSelect1" name="continent" > 14 <option>アジア</option> 15 <option>北アメリカ</option> 16 <option>中南米</option> 17 <option>ヨーロッパ</option> 18 <option>アフリカ</option> 19 <option>オセアニア</option> 20 </select> 21 </div> 22 <div class="form-group"> 23 <label for="exampleFormControlInput1">国名</label> 24 <input type="text" class="form-control" id="exampleFormControlInput1" placeholder="日本" name="country" > 25 </div> 26 <div class="form-group"> 27 <label for="exampleFormControlSelect1">滞在期間</label> 28 <select class="form-control" id="exampleFormControlSelect1" name="span" placeholder="滞在期間を選択" > 29 <option>1</option> 30 <option>2</option> 31 <option>3</option> 32 <option>4</option> 33 <option>5</option> 34 <option>6</option> 35 <option>7</option> 36 <option>8</option> 37 <option>9</option> 38 <option>10</option> 39 <option>11</option> 40  <option>12</option> 41  <option>13</option> 42  <option>14</option> 43  <option>15</option> 44  <option>16</option> 45  <option>17</option> 46 </select> 47 </div> 48 <div class="form-group"> 49 <label for="exampleFormControlSelect1">費用</label> 50 <select class="form-control" id="exampleFormControlSelect1" name="costs" placeholder="金額を選択" value='{{old('costs')}}'> 51 <option>10000</option> 52 <option>30000</option> 53 <option>50000</option> 54 <option>70000</option> 55 <option>100000</option> 56 <option>150000</option> 57 <option>200000</option> 58 <option>250000</option> 59 <option>300000</option> 60 </select> 61 </div> 62 <div class="form-group"> 63 <label for="exampleFormControlFile1">写真</label> 64 <input type="file" class="form-control-file" id="exampleFormControlFile1" name="picture"> 65 </div> 66 <div class="form-group"> 67 <label for="exampleFormControlTextarea1">コンテンツ</label> 68 <textarea class="form-control" id="exampleFormControlTextarea1" rows="5" name="content" ></textarea> 69 </div> 70 <input type="hidden" name="user_id" value="{{Auth::id()}}"> 71 <button type="submit" class="btn btn-primary btn-lg btn-block">投稿</button> 72 </form> 73 </div> 74</div> 75@endsection
マイグレーションファイル public function up() { Schema::create('contents', function (Blueprint $table) { $table->bigIncrements('id'); $table->unsignedBigInteger('user_id'); $table->string('title' , 50); $table->string('continent'); $table->string('country'); $table->string('picture'); $table->string('content' , 250); $table->integer('costs'); $table->integer('span'); $table->timestamps(); //外部キー制約 $table->foreign('user_id')->references('id')->on('users'); }); }

試したこと

・formにenctype="multipart/form-data"を追加
・バリデーションルールをimageやfileだけにしても失敗してしまいます。
・dd($request>all())をControllerとrules()でやっても同じ結果でした。
・バリデーションルールをimageのみやmilesだけにしてもダメでした。
・isValid()メソッドを利用しても同じエラーメッセージでした。

補足情報(FW/ツールのバージョンなど)

Laravel6.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問