Szukaj…


Uwagi

Nie jest konieczne, abyś używał tych samych nazw dla (kontrolera, pliku, klasy, identyfikatora) lub cokolwiek innego. Wszystkie rzeczy, których użyłem, służą zrozumieniu przepływu kodowania i moich założeń. Od dewelopera, który bierze kod i edytuje kod / nazwę zgodnie z ich życzeniem, a następnie hostuje kod i kończy się sukcesem.

Program do przesyłania pojedynczego pliku / obrazu

Zobaczymy teraz, jak działa kod ładowania obrazu / pliku w natywnej metodzie CI za pomocą formularzy zaproponowanych przez sposób CI.

Przesyłanie plików w PHP ma dwa scenariusze. Jest on wymieniony poniżej w następujący sposób.

  • Przesyłanie pojedynczego obrazu / pliku - można to zapisać za pomocą normalnej zmiennej w atrybucie formularza. (Np.) <input type="file" name="image" />
  • Multi-image / File Uploader - Można to zapisać tylko przy pomocy zmiennej tablicowej dla nazwy w typie pliku. (Np.) <input type="file" name="image[]" /> .

Zmienna tablicowa mianowicie name="profile[]" może być również przechowywana dla programu do przesyłania single image a także programu multi-image przesyłania multi-image .

Stąd kod pojedynczego obrazu / pliku przesyłającego w natywnym formacie CodeIgnitor jest następujący:

Zobacz część:

<?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();
?>

Dlatego jeśli prześlemy formularz, trafi on do

  • Employee - kontroler i wyszukaj funkcję o nazwie addemployee
  • Jeśli potrzebujesz wymaganego atrybutu dla kodu przesyłającego plik, możesz dodać atrybut HTML5 o nazwie required do tagu wejściowego.

Poniżej znajdują się dwa przykłady użycia wymaganego atrybutu, ale obie metody są również takie same.

  1. Metoda pierwsza: <input type="file" name="photo" required="required" />
  2. Metoda druga: <input type="file" name="photo" required />

Dlatego są to niektóre z ważnych wskazówek, których należy przestrzegać w części widokowej programu do przesyłania zdjęć / plików.

Część kontrolera:

<?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            
        }    
    }
?>

Uwaga: Domyślnie procedura przesyłania oczekuje, że plik pochodzi z pola formularza zwanego userfile , a form musi być typu multipart .

  • Dlatego przejdzie do modelu employee_model $data_value - i będzie zapisywał dane w funkcji o nazwie saveemployee .
  • Jeśli chcesz ustawić własną nazwę pola, po prostu przekaż jej wartość do metody do_upload()
  • Korzystając z klasy Przesyłanie plików, możemy przesyłać pliki, a także możemy ograniczać rodzaj i rozmiar przesyłanego pliku.
  • display_errors() - Pobiera komunikaty o błędach, jeśli metoda do_upload() zwróciła wartość false. Metoda nie echa automatycznie, zwraca dane, dzięki czemu można przypisać je w dowolny sposób

Notacje:

Są to notacje dostępne w CI i możemy je zdefiniować w pliku index.php jako krótką definicję i możemy użyć go w całym projekcie.

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

Część modelu:

public function saveemployee($data_value)
{
    $this->db->insert('employee',$data_value);
}
  • Będzie zapisywać dane w tabeli employee z przesłaną nazwą zdjęcia.
  • Przesłany obraz zostanie zapisany w katalogu, który utworzyliśmy w folderze głównym lub innym określonym przez nas folderze.


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow