사진을 업로드 할 Laravel 5.2 코드를 작성하고 싶습니다. 한 번에 여러 사진을 업로드하기 시작하면 문제가 생깁니다.Laravel 5.2 TokenMismatchException
그것은 나에게 오류를 제공합니다 VerifyCsrfToken.php 라인 67 TokenMismatchException을 다음 {{csrf_field()}} 형태에서 누락 된 경우
이이 오류는 표시해야하지만,이 경우는 외설 ' 그게 바로 거기에요.
적은 이미지로도 완벽하게 작동합니다. 무엇이 문제 일 수 있습니까? 이 {{ csrf_field() }}
을 필요가 없습니다
컨트롤러
public function store(Request $request)
{
$rules = array(
'picturess' => 'mimes:jpeg,jpg,bmp,png',
);
$messages = array(
'mimes' => 'A feltöltetni kívánt kép nem felel meg a kritériumoknak. (Ilyen lehet a kép kiterjesztése: jpeg, jpg, bmp vagy png. A kép se lehet bármekkora.)',
'integer' => 'A beírt szőveg nem szám.',
'required' => 'Ennek a mezőnek a kitőltése kötelező.',
);
$validator = Validator::make(Input::all(), $rules, $messages);
if ($validator->fails()) {
$messages = $validator->messages();
return Redirect::back()->withInput()->withErrors($validator);
}
if (Input::hasFile('pictures')) {
$files = $request::file('pictures');
$file_count = count($files);
$uploadcount = 0;
$destinationPath = 'uploads';
$userId = Auth::user()->id;
foreach ($files as $file) {
if ($file->isValid()) {
$extension = $file->getClientOriginalExtension();
$pictureFileName = $this->makePictureFileName(0, $extension);
$thumbnailPictureFileName = $this->makePictureFileName(1, $extension);
Log::info('pictureFileName: '.$pictureFileName);
if ($file->move($destinationPath, $pictureFileName)) {
$uploadcount++;
$img = Image::make($destinationPath . '/' . $pictureFileName);
//$img = Image::make($file->getClientOriginalName());
$img->resize(277, null, function ($constraint) {
$constraint->aspectRatio();
});
$img->save($destinationPath . '/' . $thumbnailPictureFileName);
$picture = new Picture;
$picture->filename = $pictureFileName;
$picture->thumbnail_filename = $thumbnailPictureFileName;
$picture->user_id = $userId;
$picture->save();
}
} else {
Session::flash('picture-error', 'A feltöltetni kívánt kép nem megfelelő. (Valószínűleg túl nagy.)');
return redirect()->back()->withInput()->withErrors($validator);
}
}
if ($uploadcount == $file_count) {
Session::flash('success', 'A képek feltöltése sikeres.');
} else {
return redirect()->back()->withInput()->withErrors($validator);
}
}
//return Redirect::to('pictures/create');
return redirect()->back()->withInput()->withErrors($validator);
}
보기
@extends('layouts.site')
@section('content')
<div class="row">
<div class="col-md-12">
{!! Form::open(array('method' =>'POST', 'url' => 'pictures', 'class' => 'uk-form', 'files'=> true)) !!}
{{ csrf_field() }}
<div class="form-group">
{!! Form::label('pictures', 'Kép', array('class' => '')) !!}
<div class="uk-form-controls">
{!! Form::file('pictures[]', array('class' => '','multiple'=>true)) !!}
</div>
</div>
<div class="form-group">
<button class="uk-button">Küldés</button>
</div>
@if ($errors->has('success'))
<div class="alert alert-danger" role="alert">
<p>{{ $errors->first('success') }}</p>
</div>
@endif
@if(Session::has('picture-error'))
<div class="alert alert-danger" role="alert">
<p class="errors">{!! Session::get('error') !!}</p>
</div>
@endif
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
{!! Form::close() !!}
</div>
</div>
@stop
경로는
Route::group(['middleware' => ['web']], function() {
Route::get('/', '[email protected]');
Route::get('admin', '[email protected]');
Route::resource('pictures', 'PicturesController');
Route::resource('users', 'UsersController');
Route::auth();
});
성공적으로 이미지를 업로드하면 사용자를 어디로 리디렉션합니까? 세션에 대한 성공 메시지를 깜박이는 것처럼 보이지만 입력으로 다시 리디렉션되는 것처럼 보입니다. 이미 토큰이 "사용"되었기 때문에 토큰이 오류를 생성 할 것이므로 새로운 토큰을 만들어 오류를 피하는 새로운 인스턴스로 라우트로 전송하려고 할 수 있습니다. – camelCase
나는 비슷한 문제가있다. 나는 무엇이 잘못되었는지 파악하지 못했습니다. http://stackoverflow.com/questions/37717449/how-to-resolve-tokenmismatchexception-in-laravel-5-app –
이 코드를 사용하여 사용자를 리디렉션하는 경우 redirect ('pictures/create'); 제대로 작동해야합니까? 그것은 같기 때문에 실제로 작동하지 않습니다. –