codeigniter
Image / File Uploader en CodeIgniter
Buscar..
Observaciones
No es necesario que tenga que usar los mismos nombres para (Controlador, Archivo, Clase, ID) o lo que sea. Todo lo que he usado es para comprender el propósito del flujo de codificación y mis suposiciones. Depende del desarrollador que tome el código y edite el código / nombre de acuerdo con su deseo y luego aloje el código y tenga éxito.
Un solo archivo / cargador de imágenes
Ahora veremos cómo funciona el código de carga de imagen / archivo en el método de CI nativo con la ayuda de los formularios que ha propuesto la forma de CI.
Carga de archivos en PHP tiene dos escenarios. Se menciona a continuación de la siguiente manera.
- Imagen única / cargador de archivos: se puede guardar con la ayuda de la variable normal en el atributo de formulario. (Por ejemplo)
<input type="file" name="image" />
- Imagen múltiple / Cargador de archivos: esto se puede guardar solo con la ayuda de la variable de matriz para el nombre en el tipo de archivo. (Por ejemplo)
<input type="file" name="image[]" />
.
La variable de matriz a saber name="profile[]"
puede también ser mantenido para la single image
de subida, así como la multi-image
cargador también.
Por lo tanto, el código de la Imagen única / Cargador de archivos en el formato Native CodeIgnitor es el siguiente:
Ver parte:
<?php
echo form_open_multipart('employee/addemployee', array('name' => 'addemployee', 'class'=>'form-horizontal'));
?>
<div class="form-group">
<label class="control-label col-sm-4" for="pwd">Profile:</label>
<div class="col-sm-8">
<input type="file" class="" id="profile" name="userimage">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<input type="submit" class="btn btn-primary pull-right" name="save" value="Save Employee" />
</div>
</div>
<?php
echo form_close();
?>
Por lo tanto si presentamos el formulario iremos a la
-
Employee
- Controlador y búsqueda de la función llamadaaddemployee
- Si necesita el atributo requerido para el código del cargador de archivos, puede agregar el atributo HTML5 llamado
required
a la etiqueta de entrada.
A continuación se muestran los dos ejemplos de cómo usar el atributo requerido, pero ambos métodos también son los mismos.
- Método uno:
<input type="file" name="photo" required="required" />
- Método dos:
<input type="file" name="photo" required />
Por lo tanto, estos son algunos de los consejos importantes que se deben seguir en la parte de la vista del cargador de imágenes / archivos.
Parte del controlador:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Employee extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('employee_model');
$this->load->helper('url'); //This will load up all the URL parameters from the helper class
$this->load->helper('form'); //This will load up all the form attributes that are need by the form.
}
public function addemployee()
{
if($_FILES["userimage"]['name']=='')
{
// Here you can directly redirect to the form page itself with the Error Message
}
else
{
$new_name = time().$_FILES["userimage"]['name']; //This line will be generating random name for images that are uploaded
$config['upload_path'] = FCPATH ."assets/fileupload/";
$config['allowed_types'] = 'gif|jpg|png';
$config['file_name'] = $new_name;
$this->load->library('upload', $config); //Loads the Uploader Library
$this->upload->initialize($config);
if ( ! $this->upload->do_upload('userimage')) {}
else
{
$data = $this->upload->data(); //This will upload the `image/file` using native image upload
}
$data_value = array(
'profile'=>$new_name,
); //Passing data to model as the array() parameter
$this->employee_model->saveemployee($data_value); //save_employee is the function name in the Model
}
}
?>
Nota: de forma predeterminada, la rutina de carga espera que el archivo provenga de un campo de formulario llamado userfile
, y el form
debe ser de tipo multipart
.
- Por lo tanto, irá a
employee_model
con la matriz$data_value
- array y guardará los datos bajo la función llamadasaveemployee
. - Si desea establecer su propio nombre de campo, simplemente pase su valor al método
do_upload()
- Usando la clase de carga de archivos, podemos cargar archivos y también podemos restringir el tipo y tamaño del archivo que se va a cargar.
-
display_errors()
: recupera cualquier mensaje de error si el métododo_upload()
devuelve falso. El método no se hace eco automáticamente, devuelve los datos para que pueda asignarlos como necesite.
Notaciones:
Estas son las notaciones que están disponibles en el CI y podemos definirlo en el index.php
como una definición corta y podemos usarlo en el proyecto completo.
EXT: The PHP file extension
FCPATH: Path to the front controller (this file) (root of CI)
SELF: The name of THIS file (index.php)
BASEPATH: Path to the system folder
APPPATH: The path to the "application" folder
Parte del modelo:
public function saveemployee($data_value)
{
$this->db->insert('employee',$data_value);
}
- Se guardarán los datos en la tabla de
employee
con el nombre de la imagen cargada. - Y la imagen cargada se guardará en el directorio que hemos creado en la carpeta raíz o en cualquier otra carpeta que especifiquemos.