codeigniter
Program do przesyłania obrazów / plików w CodeIgniter
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 nazwieaddemployee
- 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.
- Metoda pierwsza:
<input type="file" name="photo" required="required" />
- 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 nazwiesaveemployee
. - 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 metodado_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.