View upload_file
Es el interfaz de usuario compuesto por el Formulario de carga y por los mensajes de error y éxito. Necesarios para la carga de los archivos.
Formulario de carga
En este proyecto, permite al usuario seleccionar y enviar un archivo al Controller Home.
upload_file.php
form_open_multipart('home/upload') ?>
<div class="file">
<input type="file" name="userfile" id="fileLang" onchange="loadFile(event)">
<label id="fileLabel" for="fileLang">label>
div>
<div id="content" class="content-file">div>
<div class="upload-file">
<button type="submit">Subir archivobutton>
div>
Parámetros
- form_open_multipart: Permite enviar un formulario al Controller especificado.
- input: type file permite seleccionar un archivo.
- button: type submit al hacer click envía un formulario al Controller.
Mensajes de error
Los mensajes de error al cargar un archivo se muestra en alertas de javascript.
upload_file.php
if($errors): ?>
foreach($errors as $error): ?>
alert(" esc($error) ?>");
endforeach ?>
endif; ?>
Mensajes de éxito
Los mensajes de éxito al cargar un archivo como en el caso anterior se muestra en alertas de javascript.
Controller Home
Es el Controller por defecto que encarga de termina la carga de un archivo en el directorio especificado del server, con las preferencias especificadas.
Función index
Se encargar de carga la vista upload_file.php.
Home.php
public function index()
{
return view('upload_file', ['errors' => []]);
}
Función upload
Se encarga de recibir el archivo enviado desde el Formulario de carga, posteriormente después de validar las preferencias especificadas terminar de cargar el archivo.
Home.php
public function upload()
{
$validationRule = [
'userfile' => [
'label' => 'Upload files',
'rules' => 'uploaded[userfile]'
. '|max_size[userfile,2000]',
],
];
if (!$this->validate($validationRule)) {
$data = ['errors' => $this->validator->getErrors()];
return view('upload_file', $data);
}
$file = $this->request->getFile('userfile');
if (! $file->hasMoved()) {
$newName = $file->getRandomName();
$file->move('./file', $newName);
$data = ['success' => "El archivo se subió correctamente."];
return view('upload_file', $data);
} else {
$data = ['errors' => 'El archivo ya se ha movido.'];
return view('upload_file', $data);
}
}
Parámetros
- userfile: Es el name="userfile" del input.
- validationRule: Preferencias especificadas para validar el archivo.
- data: Valor de los mensajes de error o éxito que retorna al view upload_file.php.