图片验证错误:个人资料图片必须是图片

时间:2020-07-23 04:06:54

标签: php laravel image validation store

我是Laravel的新手。我正在使用Laravel6.0。 我收到错误消息“个人资料图片必须是图像”。但我找不到任何解决方案。 你能帮我吗?

这是我的控制器Request,create.blade.php

 public function rules()
{
    return [
        'user_id'=>'required',
        'title' => 'required|string|max:255',
        'continent' => 'required|string',
        'picture'=>'required|image|max:1000',
        'country' => 'required|string',
        'costs'=>'required|numeric',
        'span'=>'required|numeric',
        'content'=>'required|string|max:250',
    ];

  namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests\ContentRequest;
use App\Content;

class ContentController extends Controller



public function store(ContentRequest $request)
  {
      if($request->validated()){
          $content =new Content;
          
          $filename = $request->file('image')->store('public/image');
          $content->picture = basename($filename);

          $content->user_id = $request->user_id;
          $content->content = $request->content;
          $content->title = $request->title;
          $content->span = $request->span;
          $content->continent = $request->continent;
          $content->country = $request-> country;
          $content->costs = $request->costs;
          
          $content->save();
      }
      
      return redirect('/');
      
  }


create.blade.php



@extends('layouts.app')
@section('content')
<div class="card">
  <div class="card-body">
     <form action="{{route('content.store')}}" method="post" enctype="multipart/form-data" >
          @csrf
        <div class="form-group">
          <label for="exampleFormControlInput1">タイトル</label>
          <input type="text" class="form-control" id="exampleFormControlInput1" placeholder="旅のタイトル" name="title" value="{{old('title')}}" >
        </div>
        <div class="form-group">
          <label for="exampleFormControlSelect1">大陸名</label>
          <select class="form-control" id="exampleFormControlSelect1" name="continent"  value="{{old('continent')}}">
            <option>アジア</option>
            <option>北アメリカ</option>
            <option>中南米</option>
            <option>ヨーロッパ</option>
            <option>アフリカ</option>
            <option>オセアニア</option>
          </select>
        </div>
        <div class="form-group">
          <label for="exampleFormControlInput1">国名</label>
          <input type="text" class="form-control" id="exampleFormControlInput1" placeholder="日本" name="country" value="{{old('country')}}">       
        </div>
        <div class="form-group">
          <label for="exampleFormControlSelect1">滞在期間</label>
          <select class="form-control" id="exampleFormControlSelect1" name="span" placeholder="滞在期間を選択"  >
            <option>1</option>
            <option>2</option>
            <option>3</option>
            <option>4</option>
            <option>5</option>
            <option>6</option>
            <option>7</option>
            <option>8</option>
            <option>9</option>
            <option>10</option>
            <option>11</option>
           <option>12</option>
           <option>13</option>
           <option>14</option>
           <option>15</option>
           <option>16</option>
           <option>17</option>
          </select>
        </div>
        <div class="form-group">
          <label for="exampleFormControlSelect1">費用</label>
          <select class="form-control" id="exampleFormControlSelect1" name="costs" placeholder="金額を選択" value='{{old('costs')}}'>
            <option>10000</option>
            <option>30000</option>
            <option>50000</option>
            <option>70000</option>
            <option>100000</option>
            <option>150000</option>
            <option>200000</option>
            <option>250000</option>
            <option>300000</option>
          </select>
        </div>
        <div class="form-group">
          <label for="exampleFormControlFile1">写真</label>
          <input type="file" class="form-control-file" id="exampleFormControlFile1" name="picture" value="{{old('picture')}}">
          <div class="input-group-append">
              <button type="submit" class="btn btn-outline-secondary reset"><i class="fas fa-times fa-fw"></i>取消</button>
          </div>
        </div>
        <div class="form-group">
          <label for="exampleFormControlTextarea1">コンテンツ</label>
          <textarea class="form-control" id="exampleFormControlTextarea1" rows="5" name="content"  >{{old('content')}}</textarea>
        </div>
        <input type="hidden" name="user_id" value="{{Auth::id()}}">
        <button type="submit" class="btn btn-primary btn-lg btn-block">投稿</button>
      </form>
  </div>
</div>
@endsection




我尝试过

1,在“ create.blade.php”中添加了enctype =“ multipart / form-data”

2,在我的rules()中添加了dd($ request-> all()),但出现了相同的错误消息。

2 个答案:

答案 0 :(得分:3)

要定义图像验证,您需要添加以下规则:

图片

'image' => 'image',

哑剧

'image' => 'mimes:jpeg,jpg,png,gif',

大小

'image' => 'image|size:1000', // max 1000 Kb, you can decide this based on your server configuration

尺寸

'image' => 'dimensions:min_width=100,min_height=100,max_width=768,max_height=768',

//for specifying ratio
'image' => 'dimensions:ratio=3/2', 

official page

上查看更多验证规则

答案 1 :(得分:1)

您已在规则中添加了图像验证。

'picture'=>'required|image|max:1000',

尝试定义图片的类型。

'picture'=> 'mimes:jpeg,jpg,png,gif|required|max:1000'