FuelPHP - Téléchargement de fichiers
Le téléchargement de fichiers est l'une des fonctionnalités les plus couramment utilisées dans la programmation de formulaires. FuelPHP fournit une classe spéciale,Uploadpour gérer le téléchargement des fichiers. Apprenons à télécharger un fichier à l'aide de la classe Upload dans ce chapitre.
Configuration
La classe de téléchargement peut être configurée à l'aide d'un fichier de configuration séparé, fuel/app/config/upload.php. Les entrées de configuration importantes sont les suivantes -
max_size- Définissez la taille maximale du fichier à télécharger. «0» fait référence à une taille de téléchargement illimitée
ext_whitelist - Définir les extensions de fichier autorisées
ext_blacklist - Définir les extensions de fichier non autorisées
type_whitelist- Définissez les types de fichiers autorisés. Par exemple, "texte" pour le type mime "text / plain"
type_blacklist - Définir les types de fichiers non autorisés
mime_whitelist- Définissez les types de fichiers mime autorisés. Par exemple, "text / plain"
mime_blacklist - Définir les types de fichiers mime non autorisés
prefix - Chaîne à préfixer dans le nom de fichier lors de l'enregistrement du fichier téléchargé sur le serveur
suffix - Chaîne de suffixe dans le nom de fichier lors de l'enregistrement du fichier téléchargé sur le serveur
extension - Extension du fichier téléchargé à définir
create_path - S'il faut créer le chemin du fichier, s'il n'est pas disponible
overwrite - S'il faut écraser le fichier existant lors de l'enregistrement du fichier téléchargé
auto_rename - S'il faut renommer le fichier en ajoutant un numéro de séquence lors de l'enregistrement du fichier téléchargé
randomize - S'il faut créer un nom aléatoire de 32 caractères pour enregistrer le fichier téléchargé
Méthodes de téléchargement
La classe de téléchargement fournit des options pour traiter et enregistrer le fichier téléchargé par les utilisateurs. Chaque fichier traité (avant l'enregistrement) aura les informations suivantes dans le tableau de résultats.
field - Nom du champ de formulaire
name - Nom du fichier téléchargé
type - Type de fichier tel que défini par le navigateur
mimetype - Type de fichier tel que défini par la classe Upload
file - Nom complet de l'emplacement temporaire du fichier téléchargé
filename - Nom de fichier du fichier téléchargé
extension - Extension du fichier téléchargé
size - Taille du fichier téléchargé en octets
errors - Tableau d'erreur avec code d'erreur et message
error - Définir les erreurs de tableau avec la raison pour laquelle le téléchargement échoue (en cas d'échec du téléchargement)
Une fois les fichiers enregistrés sur le serveur, le tableau de résultats contient également les informations suivantes.
saved_to - Chemin d'accès complet où le fichier téléchargé a été enregistré
saved_as - Nom du fichier qui a été enregistré
errors - Tableau d'erreur mis à jour
Voyons maintenant la méthode de la classe Upload.
est valable
is_valid renvoie true, si un fichier valide est téléchargé par l'utilisateur.
// do we have any uploaded files to save?
if (Upload::is_valid()) {
// process
}
get_files
get_files renvoie tous les fichiers téléchargés sous forme de tableau multidimensionnel. Si un index / nom de l'entrée de fichier du formulaire est spécifié, il renverra le fichier téléchargé lié à l'entrée de fichier spécifiée uniquement.
foreach(Upload::get_files() as $file) {
// do something with the file info
}
if ( Upload::get_files(0)) {
// do something
}
get_errors
get_errors renvoie un tableau d'erreurs, en cas d'échec du téléchargement d'un ou plusieurs fichiers. Si un index / nom du nom d'entrée de fichier du formulaire est spécifié, il renverra l'erreur liée à l'entrée de fichier spécifiée uniquement.
foreach(Upload::get_errors() as $file) {
// do something with the file info
}
if (Upload::get_errors('myimage')) {
// do something
}
Processus
processus fait référence au processus réel de collecte d'informations sur le fichier téléchargé. Nous pouvons fournir une nouvelle configuration personnalisée à l'aide de array. Si aucune configuration n'est spécifiée, il utilisera la configuration définie dans fuel / app / config / upload.php
Upload::process (array(
'auto_rename' => false,
'overwrite' => true
));
enregistrer
save fait référence au processus réel d'enregistrement de tous les fichiers validés dans un emplacement approprié. Nous pouvons spécifier l'index pour enregistrer uniquement cette entrée particulière.
Upload::save();
Upload::save(0);
Upload::save(0, 3);
Exemple de travail
Créons un nouveau contrôleur, Controller_Upload dans notre exemple d'employé pour tester la fonctionnalité de téléchargement.
Step 1 - Créer un fichier, fuel/app/classes/controller/upload.php. Créez un contrôleur de téléchargement.
<?php
class Controller_Upload extends Controller {
}
Step 2 - Créez une nouvelle action get_upload.
<?php
class Controller_Upload extends Controller {
public function get_index() {
return \View::forge("upload/index");
}
}
Step 3 - Créez une nouvelle vue pour l'action créée.
<!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 - Créez une nouvelle action post_action pour traiter le fichier téléchargé.
<?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);
}
}
}
}
Enfin, lancez l'application en demandant l'url, http://localhost:8080/upload/index et essayez de télécharger le fichier.