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.