codeigniter
Afbeelding / bestandsuploader in CodeIgniter
Zoeken…
Opmerkingen
Het is niet nodig dat u dezelfde namen gebruikt voor de (Controller, Bestand, Klasse, ID) of wat het ook is. Alle dingen die ik heb gebruikt, zijn voor het begrip doel van de coderingsstroom en mijn aannames. Het is aan de ontwikkelaar die de code neemt en de code / naam naar wens wijzigt en vervolgens de code host en slaagt.
Uploader voor één bestand / afbeelding
We zullen nu zien hoe de Image / File Uploading-code werkt in de native CI-methode met behulp van de formulieren die op de CI-manier zijn voorgesteld.
Bestanden uploaden in PHP heeft twee scenario's. Het wordt hieronder als volgt vermeld.
- Single Image / File uploader - Dit kan worden opgeslagen met behulp van de normale variabele in het formulierkenmerk. (Bijv.)
<input type="file" name="image" />
- Multi-image / File Uploader - Dit kan alleen worden opgeslagen met behulp van de arrayvariabele voor de naam in het bestandstype. (Bijv.)
<input type="file" name="image[]" />
.
De tabel variabele namelijk name="profile[]"
kunnen eveneens niet langer de single image
uploader en de multi-image
uploader ook.
Daarom is de Single Image / File Uploader-code in de indeling Native CodeIgnitor als volgt:
Onderdeel bekijken:
<?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();
?>
Dus als we het formulier indienen, gaat het naar de
-
Employee
- Controller en zoek naar de functie met de naamaddemployee
- Als u het vereiste kenmerk voor de uploadercode van het bestand nodig hebt, kunt u het
required
HTML5-kenmerk toevoegen aan de invoertag.
Hieronder staan de twee voorbeelden van het gebruik van het vereiste kenmerk, maar beide methoden zijn ook hetzelfde.
- Methode één:
<input type="file" name="photo" required="required" />
- Methode twee:
<input type="file" name="photo" required />
Daarom zijn dit enkele van de belangrijke tips die moeten worden gevolgd in het weergavegedeelte van de image / file uploader.
Controller onderdeel:
<?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
}
}
?>
Opmerking: Standaard verwacht de uploadroutine dat het bestand afkomstig is van een formulierveld met de naam userfile
, en het form
moet van het type multipart
.
- Daarom gaat het naar het
employee_model
met de$data_value
- array en$data_value
het de gegevens op onder de functiesaveemployee
. - Als u uw eigen veldnaam wilt instellen, geeft u de waarde gewoon door aan de methode
do_upload()
- Met behulp van de klasse Bestand uploaden kunnen we bestanden uploaden en kunnen we ook het type en de grootte van het te uploaden bestand beperken.
-
display_errors()
- Haalt eventuele foutmeldingen op als de methodedo_upload()
false retourneert. De methode echoert niet automatisch, maar retourneert de gegevens zodat u ze kunt toewijzen zoals u nodig hebt
aanduidingen:
Dit zijn de notaties die beschikbaar zijn in de CI en we kunnen het in de index.php
definiëren als een korte definitie en we kunnen het gebruiken in het hele project.
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
Model onderdeel:
public function saveemployee($data_value)
{
$this->db->insert('employee',$data_value);
}
- Het slaat de gegevens op de
employee
met de geüploade afbeeldingsnaam. - En de geüploade afbeelding wordt opgeslagen in de map die we hebben gemaakt in de hoofdmap of een andere map die we opgeven.