Laravel 5.3-图像验证不起作用

Luu*_*ter 3 php laravel laravel-5 laravel-5.3

我对图像或哑剧的整体验证存在问题。

这是我的代码:

$this->validate($request, [
        'title' => 'required|max:50',
        'content' => 'required|min:20',
        'description' => 'required|max:140',
        'file' => 'image'
    ]);
Run Code Online (Sandbox Code Playgroud)

当我尝试上传任何文件时,出现错误:

文件上传失败。

当我没有image标志时,一切都很好。

我可以放点像requiredmax:5000

我看了看文档,它应该起作用,但是不起作用。

那我在做什么错?

编辑:

新增表格:

 {!! Form::open(['method' => 'POST', 'action' => 'PostController@store', 'files' => 'true' ]) !!}

            <div class="form-group">

                {!! Form::label('title', 'Title:') !!}<br>
                {!! Form::text('title', null, ['class' => 'form-control']) !!}
                <small>Max 50 characters</small>

                <br>

                {!! Form::label('description', 'Description:') !!}<br>
                {!! Form::textarea('description', null, ['class' => 'form-control', 'rows' => 2, 'cols' => 50]) !!}
                <small>Max 140 characters</small>

                <br>

                {!! Form::label('content', 'Content:') !!}<br>
                {!! Form::textarea('content', null, ['class' => 'form-control', 'id' =>'content', 'rows' => 8, 'cols' => 50]) !!}

                <br>

                {!! Form::label('file', 'Upload a thumbnail here:') !!} <br>
                {!! Form::file('file', null, ['class' => 'form-control']) !!} <br>
                <small>Only jpeg, png, bmp, gif, or svg</small>

            </div>

                {!! Form::submit(null, ['class' => 'btn btn-primary']) !!}

                {!! Form::close() !!}
Run Code Online (Sandbox Code Playgroud)

编辑2:

添加了html:

<form method="POST" action="https://blog.luukwuijster.eu" accept-charset="UTF-8" enctype="multipart/form-data"><input name="_token" type="hidden" value="N72xyc8mmbdFGrS78sdhIqh25awN30AboL9ecqGm">

            <div class="form-group">

                <label for="title">Title:</label><br>
                <input class="form-control" name="title" type="text" id="title">
                <small>Max 50 characters</small>

                <br>

                <label for="description">Description:</label><br>
                <textarea class="form-control" rows="2" cols="50" name="description" id="description"></textarea>
                <small>Max 140 characters</small>

                <br>

                <label for="content">Content:</label><br>
                <textarea class="form-control" id="content" rows="8" cols="50" name="content" style="display: none;"></textarea>

                <br>

                <label for="file">Upload a thumbnail here:</label> <br>
                <input name="file" type="file" id="file"> <br>
                <small>Only jpeg, png, bmp, gif, or svg</small>

            </div>

            <input class="btn btn-primary" type="submit">

            </form>
Run Code Online (Sandbox Code Playgroud)

编辑3:

添加了控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Post;
use App\User;
use Illuminate\Support\Facades\Auth;
use GrahamCampbell\Markdown\Facades\Markdown;

class PostController extends Controller
{
/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */

public function __construct()
{
    $this->middleware('auth')->except('index', 'show');
}

public function index()
{

    $posts = Post::latest()->get();

    return view('welcome', compact('posts'));
}


/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    return view('create');
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    $input = $request->all();

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

    if($file){
        $name = rand(1, 1000000000).'_'.$file->getClientOriginalName();

        $file->move('images', $name);

        $input['thumbnail'] = $name;
    }else{
        $input['thumbnail'] = "No_Image.png";
    }

    //TODO: validatie voor de thumbnails.

    $this->validate($request->all(), [
        'title' => 'required|max:50',
        'content' => 'required|min:20',
        'description' => 'required|max:140',
        'file' => 'image'
    ]);

    Auth::user()->post()->create($input);

    return redirect('/');
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    $post = Post::findOrFail($id);
    $content = Markdown::convertToHtml($post->content);

    return view('post', compact('post', 'content'));
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    $post = Auth::user()->post()->findOrFail($id);
    return view('edit', compact('post'));
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    $input = $request->all();

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

    if($file){
        $name = rand(1, 1000000000).'_'.$file->getClientOriginalName();

        $file->move('images', $name);

        $input['thumbnail'] = $name;
    }

    //TODO: validatie voor de thumbnails.

    $this->validate($request, [
        'title' => 'required|max:50',
        'content' => 'required|min:20',
        'description' => 'required|max:140',
        'file' => 'image'
    ]);

    Auth::user()->post()->findOrFail($id)->update($input);

    return redirect('/home');
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    Auth::user()->post()->withTrashed()->findOrFail($id)->forceDelete();

    return redirect('/recyclebin');
}

public function restore($id)
{
    Auth::user()->post()->withTrashed()->findOrFail($id)->restore();

    return redirect('/home');
}

public function recyclebin()
{
    $posts = Post::onlyTrashed()->get();

    return view('recyclebin', compact('posts'));
}

public function remove($id){

    //Post::findOrFail($id)->delete();
    Auth::user()->post()->findOrFail($id)->delete();
    return redirect('/home');

}
}
Run Code Online (Sandbox Code Playgroud)

Gab*_*Mic 7

在您的开始表单标签中添加以下内容:

enctype="multipart/form-data"
Run Code Online (Sandbox Code Playgroud)

并在文件输入(实际上传位置)中添加以下内容:

multiple="multiple"
Run Code Online (Sandbox Code Playgroud)

编辑: 在每种形式中,您都应该使用该csrf_field()方法。仅在开始表单标签之前添加。

2019更新:您可以添加@csrf指令而不是csrf_field()方法。一样,对某些人来说更方便。

希望这对您有所帮助。