FuelPHP - Caricamento di file

Il caricamento dei file è una delle funzionalità più comunemente utilizzate nella programmazione dei moduli. FuelPHP offre una classe speciale,Uploadper gestire il caricamento dei file. Impariamo come caricare un file usando la classe Upload in questo capitolo.

Configurazione

La classe di caricamento può essere configurata utilizzando un file di configurazione separato, fuel/app/config/upload.php. Le voci di configurazione importanti sono le seguenti:

  • max_size- Imposta la dimensione massima del file da caricare. "0" si riferisce a dimensioni di caricamento illimitate

  • ext_whitelist - Imposta le estensioni di file consentite

  • ext_blacklist - Imposta estensioni di file non consentite

  • type_whitelist- Imposta i tipi di file consentiti. Ad esempio, "testo" per il tipo MIME "testo / normale"

  • type_blacklist - Imposta i tipi di file non consentiti

  • mime_whitelist- Imposta i tipi di file MIME consentiti. Ad esempio, "text / plain"

  • mime_blacklist - Imposta i tipi di file MIME non consentiti

  • prefix - Stringa da inserire come prefisso nel nome del file durante il salvataggio del file caricato sul server

  • suffix - Stringa da inserire nel nome del file durante il salvataggio del file caricato sul server

  • extension - Estensione del file caricato da impostare

  • create_path - Se creare il percorso del file, se non disponibile

  • overwrite - Se sovrascrivere il file esistente durante il salvataggio del file caricato

  • auto_rename - Se rinominare il file aggiungendo un numero di sequenza durante il salvataggio del file caricato

  • randomize - Se creare un nome casuale di 32 caratteri per salvare il file caricato

Metodi di caricamento

La classe di caricamento offre opzioni per elaborare e salvare il file caricato dagli utenti. Ogni file elaborato (prima del salvataggio) avrà le seguenti informazioni nella matrice dei risultati.

  • field - Nome del campo modulo

  • name - Nome del file caricato

  • type - Tipo di file come definito dal browser

  • mimetype - Tipo di file come definito dalla classe di caricamento

  • file - Nome completo della posizione temporanea del file caricato

  • filename - Nome file del file caricato

  • extension - Estensione del file caricato

  • size - Dimensione del file caricato in byte

  • errors - Serie di errori con codice e messaggio di errore

  • error - Se impostare errori di array con il motivo per cui il caricamento non riesce (in caso di errore nel caricamento)

Una volta che i file sono stati salvati nel server, la matrice dei risultati conterrà anche le seguenti informazioni.

  • saved_to - Percorso completo in cui è stato salvato il file caricato

  • saved_as - Nome del file che è stato salvato

  • errors - Array di errori aggiornato

Vediamo ora il metodo della classe Upload.

è valido

is_valid restituisce true, se un file valido viene caricato dall'utente.

// do we have any uploaded files to save? 
if (Upload::is_valid()) { 
   // process  
}

get_files

get_files restituisce tutti i file caricati come array multidimensionale. Se viene specificato un indice / nome dell'input del file del modulo, restituirà solo il file caricato relativo all'input del file specificato.

foreach(Upload::get_files() as $file) { 
   // do something with the file info 
}  
if ( Upload::get_files(0)) { 
   // do something 
}

get_errors

get_errors restituisce un array di errori, se si verifica un errore nel caricare uno o più file. Se viene specificato un indice / nome del nome di input del file del modulo, restituirà solo l'errore relativo all'input del file specificato.

foreach(Upload::get_errors() as $file) { 
   // do something with the file info 
}  
if (Upload::get_errors('myimage')) { 
   // do something 
}

Processi

processo si riferisce al processo effettivo di raccolta delle informazioni sul file caricato. Possiamo fornire una nuova configurazione personalizzata utilizzando array. Se non viene specificata alcuna configurazione, utilizzerà la configurazione definita in fuel / app / config / upload.php

Upload::process (array( 
   'auto_rename' => false, 
   'overwrite'   => true 
));

Salva

save si riferisce al processo effettivo di salvataggio di tutti i file convalidati in una posizione corretta. Possiamo specificare l'indice per salvare solo quella particolare voce.

Upload::save();
Upload::save(0);
Upload::save(0, 3);

Esempio di lavoro

Creiamo un nuovo controller, Controller_Upload nel nostro esempio di dipendente per testare la funzionalità di caricamento.

Step 1 - Crea un file, fuel/app/classes/controller/upload.php. Crea controller di caricamento.

<?php 
   class Controller_Upload extends Controller { 
   }

Step 2 - Crea una nuova azione get_upload.

<?php  
   class Controller_Upload extends Controller { 
      public function get_index() { 
         return \View::forge("upload/index"); 
      } 
   }

Step 3 - Crea una nuova vista per l'azione creata.

<!DOCTYPE html> 
<html> 
   <body> 
   
      <form action = "/upload/index" method = "post" enctype = "multipart/form-data"> 
         Select image to upload: 
         <input type = "file" name = "fileToUpload" id = "fileToUpload"> 
         <input type = "submit" value = "Upload Image" name = "submit"> 
      </form>  
      
   </body> 
</html>

Step 4 - Crea una nuova azione post_action per elaborare il file caricato.

<?php  
   class Controller_Upload extends Controller { 
      public function get_index() { 
         return \View::forge("upload/index"); 
      }  
      public function post_index(){ 
         $config = array( 
            'path' => DOCROOT.'files', 
            'randomize' => true, 
            'ext_whitelist' => array('img', 'jpg', 'jpeg', 'gif', 'png'), 
         );  
         Upload::process($config);  
         // if there are any valid files 
         
         if (Upload::is_valid()) { 
            Upload::save(); 
            echo "success"; 
         } else { 
            // and process any errors 
            foreach (Upload::get_errors() as $file) { 
               echo var_dump($file); 
            } 
         } 
      } 
   }

Infine, esegui l'applicazione richiedendo l'URL, http://localhost:8080/upload/index e prova a caricare il file.

Risultato