codeigniter
Image / File Uploader dans CodeIgniter
Recherche…
Remarques
Il n'est pas nécessaire que vous deviez utiliser les mêmes noms pour le (contrôleur, fichier, classe, identifiant) ou autre chose. Tout ce que j'ai utilisé sert à comprendre le flux de codage et mes hypothèses. C'est au développeur qui prend le code et édite le code / nom en fonction de son souhait, puis héberge le code et réussit.
File Single / Image Uploader
Nous allons maintenant voir comment le code de téléchargement d'images / fichiers fonctionne dans la méthode CI native à l'aide des formulaires proposés par la méthode CI.
Le téléchargement de fichiers en PHP a deux scénarios. Il est mentionné ci-dessous comme suit.
- Single Image / File uploader - Ceci peut être sauvegardé à l'aide de la variable normale dans l'attribut du formulaire. (Par exemple)
<input type="file" name="image" />
- Multi-image / File Uploader - Il peut être enregistré uniquement à l'aide de la variable tableau pour le nom dans le type de fichier. (Par exemple)
<input type="file" name="image[]" />
.
La variable de tableau à savoir name="profile[]"
peut également être conservée pour le téléchargeur d' single image
ainsi que pour le téléchargeur d' multi-image
.
Par conséquent, le code de téléchargement de l'image unique / du fichier au format Native CodeIgnitor est le suivant:
Voir la partie:
<?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();
?>
Par conséquent, si nous soumettons le formulaire, il sera envoyé au
-
Employee
- Contrôleur et recherche de la fonction nomméeaddemployee
- Si vous avez besoin de l'attribut requis pour le code de téléchargement de fichier, vous pouvez ajouter l'attribut HTML5 appelé
required
à la balise d'entrée.
Vous trouverez ci-dessous deux exemples d'utilisation de l'attribut requis, mais les deux méthodes sont également identiques.
- Première méthode:
<input type="file" name="photo" required="required" />
- Deuxième méthode:
<input type="file" name="photo" required />
Voilà donc quelques conseils importants à suivre dans la partie vue du chargeur d'images / fichiers.
Partie contrôleur:
<?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
}
}
?>
Remarque: Par défaut, la routine de téléchargement attend le fichier provenant d'un champ de formulaire appelé userfile
, et le form
doit être de type multipart
.
- Par conséquent, il ira au
$data_value
employee_model
avec le tableau$data_value
- et il enregistrera les données sous la fonction appeléesaveemployee
. - Si vous souhaitez définir votre propre nom de champ, transmettez simplement sa valeur à la méthode
do_upload()
- En utilisant la classe File Uploading, nous pouvons télécharger des fichiers et nous pouvons également limiter le type et la taille du fichier à télécharger.
-
display_errors()
- Récupère les messages d'erreur si la méthodedo_upload()
retourne false. La méthode ne fait pas automatiquement écho, elle renvoie les données afin que vous puissiez les attribuer comme vous le souhaitez
Notations:
Ce sont les notations disponibles dans le CI et nous pouvons le définir dans le index.php
tant que définition courte et nous pouvons l’utiliser dans le projet entier.
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
Pièce modèle:
public function saveemployee($data_value)
{
$this->db->insert('employee',$data_value);
}
- Il enregistrera les données sur la table des
employee
avec le nom de l'image téléchargée. - Et l'image téléchargée sera enregistrée dans le répertoire que nous avons créé dans le dossier racine ou dans tout autre dossier que nous spécifions.