在laravel 5.0中,我正在测试上传文件,我希望扩展名仅限于pdf,doc或docx,大小最大为5MB。在我的表单中,我有两个输入类型为date和输入类型文件。如果我没有放任何文件我看到错误。但是,如果我上传一个类型或文件不同的pdf,doc或docx或超过5MB的页面重新加载,我没有看到任何错误,但在日志中我看到这个:
[2017-07-19 12:53:11] local.ERROR: exception 'Exception' with message 'Serialization of 'Symfony\Component\HttpFoundation\File\UploadedFile' is not allowed' in /var/www/html/seguridadehigiene/vendor/laravel/framework/src/Illuminate/Session/Store.php:255
Stack trace:
#0 /var/www/html/seguridadehigiene/vendor/laravel/framework/src/Illuminate/Session/Store.php(255): serialize(Array)
#1 /var/www/html/seguridadehigiene/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(89): Illuminate\Session\Store->save()
#2 /var/www/html/seguridadehigiene/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(135): Illuminate\Session\Middleware\StartSession->terminate(Object(Illuminate\Http\Request), Object(Illuminate\Http\RedirectResponse))
#3 /var/www/html/seguridadehigiene/public/index.php(57): Illuminate\Foundation\Http\Kernel->terminate(Object(Illuminate\Http\Request), Object(Illuminate\Http\RedirectResponse))
#4 /var/www/html/seguridadehigiene/server.php(21): require_once('/var/www/html/s...')
#5 {main}
这是我的刀片模板:
@extends('pages.client.main')
@section('title')
Crear una Evaluación Ergonómica
@stop
@section('content')
<ol class="breadcrumb">
<li class="active">Del Trabajador</li>
<li class="active">Ergonomía</li>
<li><a href="{{url('ergonomicsEstablishments')}}">Evaluaciones Ergonómicas</a></li>
<li><a href="{{url('ergonomicsEstablishments/'.$establishmentId.'/ergonomicsPosts')}}">Puestos por Establecimiento</a></li>
<li class="active">Cargar planilla de Evaluación Ergonómica</li>
</ol>
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Cargar una Evaluación Ergonómica</h3>
</div>
@include('errors.list')
{!! Form::open(['files' => 'true', 'url' => 'ergonomicsEstablishments/'.$establishmentId.'/ergonomicsPosts/'.$postId.'/ergonomics', 'onsubmit' => "return confirm('¿Confirma GRABAR los datos ingresados?');"]) !!}
<div class="panel-body">
<div class="form-group">
{!! Form::label('puesto', 'Puesto: '.$postName) !!}
</div>
<div class="form-group">
{!! Form::label('fecha_evaluacion', 'Fecha de Evaluacion:', ['class' => 'required']) !!}
{!! Form::input('date', 'fecha_evaluacion', null, ['class' => 'form-control', 'autofocus' => 'autofocus'] ) !!}
</div>
<div class="form-group">
{!! Form::label('fecha_renovacion', 'Fecha de Renovación:', ['class' => 'required']) !!}
{!! Form::input('date', 'fecha_renovacion', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('evaluacion', 'Planilla 1-IDENTIFICACIÓN DE FACTORES DE RIESGOS:', ['class' => 'required']) !!}
{!! Form::file('evaluacion', ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::submit($buttonText, ['class' => 'btn btn-success ' ] ) !!}
<a href="{{url('ergonomicsEstablishments/'.$establishmentId.'/ergonomicsPosts/'.$postId.'/ergonomics')}}" class="btn btn-primary btn-m">
Cancelar
</a>
</div>
</div>
['buttonText' => 'Grabar', $establishmentId, $postId])
{!! Form::close() !!}
</div>
</div>
</div>
@stop
这是我控制器中的商店:
public function store(Request $request)
{
$sector = Sector::findOrFail($this->post->id_sector);
$establishmentId = $this->establishment->id;
$postId = $this->post->id;
$sectorName = str_replace("/","$",$sector->descripcion);
$post = $this->post;
$postName = str_replace("/","$",$post->identificacion);
$now = Date::toValid(Carbon::now());
$data = $request->all();
if ($data['fecha_renovacion'] == "") {
unset($data['fecha_renovacion']);
}
if ($data['fecha_evaluacion'] == "") {
unset($data['fecha_evaluacion']);
}
$validator = $this->validateFormErgonomic($data);
$evaluationDate = Date::toValid($data['fecha_evaluacion']);
//selecciono la planilla 1
$sheetName = Planilla886::findOrFail('1')->denominacion;
$dataErgonomic = [];
$dataErgonomic['id_cliente'] = ClientAuth::clientId();
$dataErgonomic['id_puesto'] = $post->id;
$dataErgonomic['fecha_evaluacion'] = $evaluationDate;
$dataErgonomic['fecha_renovacion'] = Date::toValid($data['fecha_renovacion']);
if ($request->hasFile('evaluacion')) {
//if ($request->file('evaluacion')->isValid()) {
$evaluacionFileName = ClientAuth::clientId() . '-evaluacion_ergonomica-'.$sectorName.'-'.$postName.'-'. $data['fecha_evaluacion'].'-'.$sheetName.'-'.$request->file('evaluacion')->getClientOriginalName();
$dir = File::clientPath('ergonomia/evaluaciones_ergonomicas');
$request->file('evaluacion')->move($dir, $evaluacionFileName);
$data['evaluacion'] = $dir . $evaluacionFileName;
/*}
else{
Session::flash('error', 'Tipo de archivo incorrecto');
}*/
}
$ergonomic = Ergonomia::create($dataErgonomic);
$idSheet = Planilla886::where('planilla_codigo', '=', Constants::CODIGO_PLANILLA1)->first()->id;
DetalleErgonomia::create([
'id_ergonomia' => $ergonomic->id,
'id_planillas_886' => $idSheet,
'evaluacion' => $data['evaluacion'],
'fecha_planilla' => $evaluationDate
]);
Session::flash('mensaje', 'Evaluación Ergonómica creada con exito');
return redirect('/ergonomicsEstablishments/'.$establishmentId.'/ergonomicsPosts/'.$postId.'/ergonomics');
}
这是我的验证:
public function validateFormErgonomic($data) {
$rules = array(
'fecha_evaluacion' => 'required',
'fecha_renovacion' => 'required',
'evaluacion' => 'mimes:pdf,doc,docx|required|max:5192'
);
$niceNames = array(
'fecha_evaluacion' => 'Fecha de Evaluación',
'fecha_renovacion' => 'Fecha de Renovación',
'evaluacion' => 'Planilla 1-IDENTIFICACIÓN DE FACTORES DE RIESGOS'
);
$validator = Validator::make($data, $rules);
$validator->setAttributeNames($niceNames);
$validator->after(function ($validator) {
$data = $validator->getData();
if (isset($data['fecha_evaluacion']) && Date::isFuture($data['fecha_evaluacion'])) {
$validator->errors()->add('fecha_evaluacion', 'La Fecha de Evaluación no puede ser futura');
}
if (isset($data['fecha_renovacion']) && Date::isPast($data['fecha_renovacion'])) {
$validator->errors()->add('fecha_renovacion', 'La Fecha de Renovación no puede ser pasada');
}
});
return $validator;
}
任何想法??此致!!