我的表格
{{ Form::open(array('url' => 'upfile', 'files' => 'true', 'method' => 'post', 'class' => 'form')) }}
<p>Sólo se admiten archivos en formato .pdf y no mayor a 127MB</p>
<p>
{{ Form::file('expediente', array('class' => 'text-field column_one', 'required' => 'required')) }}
</p><br>
<p>
{{ Form::text('nombrearchivo', null, array('class' => 'text-field column_one', 'required' => 'required', 'placeholder' => 'Nombre del Expediente.')) }}
</p><br>
{{ Form::hidden('username', $username) }}
<p style="color: red;">
<ul>
@foreach ($errors->all() as $message)
<li style="color:red;">{{$message}}</li>
@endforeach
<ul>
</p>
{{ Form::submit('Añadir Expediente', array('class' => 'submit submitNavy submitForm')) }}
{{ Form::close() }}
我的控制器:
public function saveExpediente(){
ini_set("memory_limit","7G");
ini_set('upload_max_filesize', '127M');
ini_set('post_max_size', '127M');
ini_set('max_input_time', 0);
ini_set('max_execution_time', 0);
set_time_limit(0);
ignore_user_abort(true);
$rules = array(
'username' => 'required|exists:users,username',
'expediente' => 'required',
'nombrearchivo' => 'required|min:5'
);
$validator = Validator::make(Input::all(), $rules);
//$fileExtension = Input::file('expediente')->guessClientExtension();
$file = Input::file('expediente');
if ($validator->fails()) {
//dd($file);
return Redirect::back()
->withErrors($validator) // send back all errors to the login form
->withInput(); // send back the input (not the password) so that we can repopulate the form
}/*else if ($fileExtension != 'pdf'){
$validator->failed();
return Redirect::to('upload')->withErrors([
'expediente' => 'El archivo debe estar en formato PDF!',
])->withInput();
}*/else {
File::makeDirectory('expedientes/'.Input::get('username'), 0770, true, true);
Input::file('expediente')->move('expedientes/'.Input::get('username'),Input::file('expediente')->getClientOriginalName());
$expediente = new Expediente;
$expediente->username = Input::get('username');
$expediente->archivo = Input::file('expediente')->getClientOriginalName();
$expediente->nombrearchivo = Input::get('nombrearchivo');
$expediente->save();
return Redirect::back()->with('message', 'Se añadió correctamente el expediente al usuario.')->with('tipo','message-success');
}
}
当我上传大于8mb的laravel返回NULL时,就像字段一样,它们是空的。我已经获得了PHP.init变量的值。我使用的是Laravel 4.2和Apache,需要25-40 MB的上传文件大小。如果我尝试dd(Input :: file('expediente'))返回NULL
答案 0 :(得分:1)
您需要增加文件上传的内存限制。你可以通过提到控制器开头的限制大小来做到这一点。
ini_set(&#39; memory_limit&#39;,&#39; size&#39;);
例如:
ini_set('memory_limit', '40M');
您可能还需要在表单
中提及enctype
(编码类型)
示例: -
{{ Form::open(array(
'url' => 'upfile',
'method' => 'post',
'class' => 'form',
'enctype' => 'multipart/form-data'
))
}}
也许你不需要这个
'files' => 'true'
答案 1 :(得分:1)
检查错误:
$request->file('image')->getErrorMessage()
如果错误如下:
The file "image_name.jpeg" exceeds your upload_max_filesize ini directive (limit is 2048 KiB)
在空白页面中,执行下一个命令以找到php.ini:
<?php phpinfo() ?>
在php.ini文件中,编辑以下几行:
post_max_size
upload_max_filesize
增加内存限制(默认为2M),您可以尝试使用10M。