Maison >php教程 >php手册 >Explication détaillée des bases de PHP file system_php
Explication détaillée des bases de PHP file system_php
WBOYoriginal
2016-05-16 09:00:221707parcourir
Fonction de traitement de fichier 1. Opération de fichier. Ouvrir le fichier : Lorsque le fichier spécifié est ouvert, l'objet correspondant sera renvoyé. Si le fichier spécifié n'existe pas, il peut. être automatiquement créé. Resource fopen(string filename, string mode [,int use_include_path][,resource context]); Filename peut être un nom de fichier contenant un chemin de fichier, ou il peut être une URL donnée par un certain protocole (pour ouvrir un fichier distant). Afin d'éviter les problèmes causés par le changement de système, '/' est utilisé comme séparateur de chemin Mode : définissez la manière d'ouvrir le fichier, respectivement : r : Lecture seule. mode, le pointeur de fichier est situé en tête du fichier r+ : Mode lecture seule - mode lecture/écriture, le pointeur de fichier est situé en tête du fichier. Notez qu'un écrasement peut se produire. w : Mode écriture seule, le pointeur de fichier est situé en tête du fichier Si le fichier existe, supprimez-le. Le contenu est réécrit ; sinon, le fichier est créé tout seul. ---lire et écrire le fichier, le pointeur de fichier en lecture/écriture pointe vers la tête du fichier si le fichier existe, supprimez le contenu et réécrivez-le sinon, créez le fichier tout seul Le mode écriture ouvre le fichier ; . Si le fichier existe, retournez false et générez un message d'erreur de niveau E_WARNING a : Append, le pointeur de fichier pointe vers la fin du fichier. Si le fichier existe, ajoutez directement à la fin du fichier ; le fichier par vous-même. a+ : Ajouter, le pointeur de fichier pointe vers la fin du fichier si le fichier existe, ajoutez ou lisez directement à la fin du fichier ; sinon, créez le fichier vous-même. : Mode binaire. Utilisé pour créer un lien avec d'autres modes. (Option sous Windows) t : Utilisé pour combiner avec d'autres modes. (Option sous Windows) Veuillez utiliser la fonction fopen() avec prudence, car le fichier peut être utilisé. être supprimé accidentellement. En même temps, différents systèmes d'exploitation ont des habitudes de fin de ligne différentes (UNIX : n Windows : rn Macinitosh : r). Si le terminateur de ligne est utilisé de manière incorrecte, un tas de caractères tronqués peuvent être affichés lorsque le fichier est supprimé. ouvert. Ce qui précède peut être passé "'t'", "'b'" pour éviter
Lire le fichier :
String fgetc(resource handle);//Renvoyer un caractère du. fichier pointé par handle. Si EOF est rencontré, alors Return false; String fgets(int handle[,int length]);//Obtenir une ligne de caractères à partir de l'emplacement pointé par le pointeur de fichier et renvoyer un chaîne d'une longueur maximale de 1 octet. Le pointeur de fichier doit être valide et pointe vers un fichier ouvert avec succès par fopen() ou fsockopen(). La longueur indique la longueur des données lues. Il se termine lorsqu'une nouvelle ligne, EOF ou. la longueur spécifiée est rencontrée. Ignorer la longueur lira jusqu'à la fin de la ligne. string fgetss(resource handle[,int length][,string Allowable_tags]);//Lire une ligne et filtrer les balises html et php <.> string fread(int handle,int length);//Lire à partir du fichier Données de n'importe quelle longueur. , peut également être utilisé pour lire des fichiers binaires. handle est une ressource pointant vers le fichier, length lit length octets ou arrête l'exécution lorsque EOF est rencontré. Exemple :
fonctions readfile(), file() et file_get_contents(). fonctions readfile(), file() et file_get_contents() int readfile(string filename[,bool use_include_path,resource context]); //Lire un fichier et l'écrire dans le tampon. En cas de succès, renvoie le nombre d'octets lus, sinon renvoie false. nom de fichier nom du fichier. Le paramètre use_include_path contrôle s'il faut prendre en charge la recherche de fichiers dans include_path, et true signifie qu'il est pris en charge. Il n'est pas nécessaire d'ouvrir/fermer le fichier à l'aide de la fonction readfile. array file(string filename [,bool use_include_path[,resource context]]);//Lire le contenu de l'intégralité du fichier dans le tableau. En cas de succès, renvoyez un tableau. Chaque élément du tableau est une ligne correspondante dans le fichier, y compris les nouvelles lignes ; sinon, return false string file_get_contents(string filename[,bool use_include_path[,resource context[,int offset[, int maxlen]]]]);//context est un nouveau contenu dans la version 5.0 et peut être ignoré avec NULL. offset, maxlen est le contenu de 5.1. offset est utilisé pour marquer la position de départ du fichier et maxlen définit la longueur du fichier lu. Cette méthode convient à la lecture de fichiers binaires. Est la méthode préférée pour lire le contenu d’un fichier dans une chaîne. Si elle est prise en charge par le système d'exploitation, la technologie de mappage de mémoire est également utilisée pour améliorer les performances. Si vous ouvrez une URL avec des caractères spéciaux (tels que des espaces), utilisez urlencode() pour coder l'URL.
Remarque : readfile(), file() et file_get_contents() n'ont pas besoin d'utiliser les fonctions fopen() et fclose() lors de la lecture du contenu du dossier entier, mais lors de la lecture d'un caractère ou d'une ligne caractères et n’importe quelle longueur de caractères.
2. Écrire dans le fichier : int fwrite(resource handle,string[,int length]);//Effectuer une opération d'écriture de fichier, il a également un alias fputs () Cette méthode est utilisée pour écrire le contenu de la chaîne dans le handle du pointeur de fichier. Si length est défini, l’opération s’arrête après l’écriture des octets de longueur ou de la chaîne. Renvoie vrai si l'écriture réussit, sinon renvoie faux. Remarque : Si le paramètre length est donné, l'option magic_quotes_runtime dans le fichier php.ini sera ignorée et les barres obliques dans la chaîne ne seront pas supprimées. Pour faire la distinction entre les fichiers binaires et les systèmes de fichiers texte, « b » doit être ajouté au paramètre mode de la fonction fopen() lors de l'ouverture du fichier. int file_put_contents(string filename,string data[.int flags[,resource context]]);//Écrivez une chaîne dans le fichier et renvoyez le nombre d'octets en cas de succès, sinon renvoyez false. flags : implémente le verrouillage des fichiers (les options incluent file_use_include_path, file_append : append, lock_ex : verrouillage exclusif). context une ressource contextuelle. Remarque : bien que fwrite() ait pour fonction d'écrire des fichiers, elle doit être prise en charge par les fonctions fopen() et fclose(). file_put_contents() intègre les fonctions de fopen(), fwrite() et fclose() et peut terminer l'écriture de fichiers indépendamment. 3. Fermez le fichier Si le fichier est ouvert, il devrait avoir une fonction de fermeture une fois l'opération sur le fichier terminée, le fichier doit être fermé, sinon cela pourrait provoquer des erreurs. . bool fclose(resouce handle);//Ferme le fichier pointé par le paramètre handle, renvoie true en cas de succès, sinon renvoie false.
Verrouiller le fichier Lors de l'écriture de données dans un fichier texte, vous devez d'abord verrouiller le fichier pour empêcher d'autres utilisateurs de modifier le contenu du fichier en même temps. Le verrouillage des fichiers est implémenté en PHP via la fonction flock(). bool flock(int handle,int operation);//L'opération du paramètre contrôle l'autorisation de verrouillage. Y compris : lock_sh : obtenir un verrou partagé (lecteur). lock_ex : Obtenez un verrou exclusif (écriture). lock_un : Libérez le verrou. lock_nb : empêche la fonction flock() de se bloquer lors du verrouillage.
Fonction de traitement de répertoire Le répertoire est un type spécial de fichier. Puisqu'il s'agit d'un fichier, si vous souhaitez l'utiliser, vous devez d'abord l'ouvrir, puis le parcourir, et enfin penser à le fermer.
1. Ouvrez le répertoire
Ouvrez le fichier de répertoire spécifié En cas de succès, renvoyez le handle du répertoire. Sinon, retournez false. Contrairement à l'ouverture d'un fichier, si le répertoire n'existe pas, il ne sera pas automatiquement créé, mais générera un message d'erreur. En ajoutant le symbole « @ » avant la fonction opendir(), vous pouvez bloquer la sortie des messages d'erreur. Resource opendir(string path[,resource context]);//path spécifie le fichier répertoire à ouvrir. Si le chemin spécifié n'est pas un répertoire valide ou si l'erreur du système de fichiers ne peut pas être ouverte en raison de problèmes d'autorisation, cette fonction renverra false et générera un message d'erreur de niveau E_WARNING. 2. Parcourez le répertoire
Utilisez le handle renvoyé par la fonction opendir et la fonction scandir pour implémenter l'opération de navigation. array scandir(string directory[,int sorting_ordering[,resource context]]);//Utilisé pour parcourir les répertoires et les fichiers sous le chemin spécifié. Renvoie un tableau contenant les noms de fichiers en cas de succès, sinon renvoie false. directory spécifie le répertoire à parcourir. S'il ne s'agit pas d'un répertoire, false sera renvoyé et un message d'erreur de niveau E_WARNING sera généré. sorting_order définit l'ordre de tri, la valeur par défaut est l'ordre alphabétique croissant. Si ce paramètre est fourni, il sera trié par ordre décroissant. Remarques : La fonction is_dir() détermine si le nom de fichier spécifié est un répertoire.Renvoie vrai si le nom de fichier existe et est un répertoire, faux sinon. S'il s'agit d'un répertoire relatif, son chemin relatif est comparé au répertoire de travail actuel.
3. Fermez le répertoire.
void closeir(resource handle);//handle, le handle du répertoire de travail à fermer.
Remarque : Comme nous l'avons appris précédemment, si le répertoire ouvert n'existe pas, le système ne créera pas le répertoire pour nous. Nous pouvons ensuite créer nous-mêmes le répertoire souhaité. Les fonctions suivantes peuvent être appliquées : Fonction mkdir() : Crée un nouveau répertoire et renvoie vrai en cas de succès, sinon faux. Fonction RMdir() : supprime un répertoire. Le répertoire doit être vide (aucun fichier ni sous-répertoire dans le répertoire) et doit disposer des autorisations d'exploitation. Fonction unlink() : supprime les fichiers, renvoie vrai en cas de succès, faux en cas d'échec.
Principe du téléchargement et du téléchargement de fichiers
Contenu de l'étape : Étape 1 : Contrôlez le fichier téléchargé et configurez-le via le fichier php.ini. Étape 2 : Jugez le fichier téléchargé. Téléchargez la taille, le format, etc. du fichier. Étape 3 : effectuez la méthode d'opération de téléchargement de fichiers.
1. Contrôler les fichiers téléchargés :
PHP contrôle les fichiers téléchargés via php.ini, notamment : la prise en charge du téléchargement, le répertoire temporaire des fichiers téléchargés et les fichiers téléchargés. La taille, le temps d'exécution de l'instruction et l'espace mémoire alloué par l'instruction. Localisez l'option de téléchargement de fichiers dans le fichier php.ini et complétez les paramètres pour les options ci-dessus. La signification des options est la suivante : File_uploads : S'il est activé, cela signifie que le serveur prend en charge le téléchargement de fichiers. S'il est désactivé, il ne le prend pas en charge. Généralement, elle est prise en charge par défaut et cette option n'a pas besoin d'être modifiée. Upload_tem_dir : Répertoire temporaire pour les fichiers téléchargés. Avant que le téléchargement du fichier réussisse, le fichier est d'abord enregistré dans le répertoire temporaire du serveur. La plupart utilisent le répertoire système par défaut, mais vous pouvez également le définir vous-même. Upload_max_filesize : La taille maximale des fichiers autorisés à être téléchargés par le serveur, en Mo. La valeur par défaut du système est de 2 Mo. Si elle dépasse, la valeur doit être modifiée. max_execution_time : La durée maximale pendant laquelle une commande en php peut être exécutée, en secondes. Cette commande doit être modifiée lors du téléchargement de fichiers très volumineux, sinon le téléchargement des fichiers dans les délais se situe dans la plage autorisée par le serveur, mais s'il dépasse la durée maximale pendant laquelle la commande peut être exécutée, le téléchargement ne sera toujours pas possible. Memory_limit : L'espace mémoire alloué par une commande en php, en Mo. Sa taille affecte également le téléchargement de fichiers très volumineux.
Remarques : Lors du contrôle de l'application de téléchargement de fichiers dans le client, les attributs enctype et method dans le formulaire, ainsi que le champ caché MAX_FILE_SIZE enctype="multipart/form-data": Spécifiez la méthode d'encodage des données du formulaire. Method="post" : Spécifiez la méthode de transmission des données. : Contrôlez la taille du fichier téléchargé via le champ caché, en octets. Cette valeur ne peut pas dépasser la valeur définie par l'option upload_max_filesize dans le fichier de configuration php.ini. Il ne peut pas contrôler entièrement la taille des fichiers téléchargés, il ne peut qu'éviter certains problèmes inutiles.
2. Déterminer les fichiers téléchargés
La variable globale $_FILES est utilisée pour juger les fichiers téléchargés. $_FILES est un tableau qui contient des informations sur tous les fichiers téléchargés. La signification de chaque élément du tableau est la suivante : $_FILES[filename][name] : stocke le nom du fichier téléchargé, tel que text.txt, title.jpg, etc. $_FILES[filename][size] : La taille du fichier stocké, en octets. $_FILES[filename][tem_name] : Le nom de fichier utilisé pour stocker le fichier dans le répertoire temporaire, car lorsque le fichier est téléchargé, il doit d'abord être stocké dans le répertoire temporaire en tant que fichier temporaire. $_FILES[filename][type] : type MIME qui stocke les fichiers téléchargés. MIME spécifie les types de différents formats de fichiers. Chaque type MIME est composé d'un type principal et d'un sous-type séparés par "/". Par exemple : le type principal de "image/gif" est image et le sous-type est un fichier au format GIF. "text/html" représente un fichier HTML de texte. $_FILES[filename][error] : Stocke le code d'erreur du téléchargement du fichier : Cet élément est un nouveau contenu dans la version PHP4.2.0. Il existe 5 types de valeurs de retour : 0 : N'indique aucune erreur. Fichier téléchargé avec succès. 1 : Indique que la taille du fichier téléchargé dépasse la valeur limite de l'option upload_max_filesize de la directive du fichier de configuration. 2 : Indique que la taille du fichier téléchargé dépasse la valeur spécifiée par l'option max_file_size dans le formulaire HTML. 3 : Indique que seule une partie du fichier a été téléchargée. 4 : Indique qu'aucun fichier n'a été téléchargé. Exemple :
/*Déterminer s'il faut télécharger la photo*/ if(!empty($_FILES['up_picture'][name])){ /*Changer les informations sur l'image sont affectées aux variables*/ $type=strtolower(strstr($_FILES['up_picture'][name],".")); if($type != '.jpg' && $type ! = '.gif') echo "Le format de fichier que vous avez téléchargé est incorrect" else{ if($_FILES['up_picture'][size]<2000000 && $_FILES['up_picture' ][size] >0){ echo "Nom du fichier de téléchargement :".$_FILES['up_picture'][name]." " echo "Type de fichier de téléchargement :" .$type. " "; echo "Taille du fichier de téléchargement :".$_FILES['up_picture'][size]." " }sinon echo "La taille de l'image ne répond pas aux exigences. " } } ?>
3.
Appliquez la fonction move_uploaded_file() en php pour implémenter le téléchargement de fichiers. Mais avant l'exécution, afin d'empêcher des attaques potentielles de gérer illégalement des fichiers avec lesquels il est impossible d'interagir via des scripts, vous pouvez d'abord utiliser la fonction is_uploaded_file() pour déterminer si le fichier spécifié a été téléchargé via HTTP POST et, si c'est le cas, renvoyer true. Cette fonction garantit que les utilisateurs malveillants ne peuvent pas tromper les scripts pour qu'ils accèdent à des fichiers inaccessibles. bool is_uploaded_file(string name);//Utilisé pour déterminer si le fichier spécifié a été téléchargé via HTTP POST. le nom de fichier doit être une variable similaire à $_FILES['filename']['temp_name']. Le nom de fichier téléchargé depuis le client ne peut pas être utilisé.
move_upload_file(string filename,string destination);//Cette fonction est utilisée pour télécharger des fichiers à l'emplacement spécifié sur le serveur. Renvoie vrai en cas de succès, faux sinon. filename spécifie le nom de fichier temporaire du fichier téléchargé, c'est-à-dire $_FILES['tmp_name'], et le paramètre destination spécifie le nouveau chemin et le nom du fichier enregistré après le téléchargement. Si le paramètre n'est pas un fichier téléchargé légal, aucune opération n'aura lieu et la fonction retournera false. S'il s'agit d'une opération de téléchargement légale mais qu'elle ne peut pas être déplacée pour une raison quelconque, aucune opération ne se produira et un avertissement sera émis lors du renvoi de false.
if( !empty( $_FILES[ 'up_picture' ][ 'name' ])){ if( $_FILES['up_picture']['error'] > 0){ echo "Erreur de téléchargement !"; switch($_FILES['up_picture']['error']){ case 1 : echo "Le fichier téléchargé dépasse la valeur spécifiée dans le fichier de configuration" break; >case 2 : echo "Le fichier téléchargé dépasse la valeur spécifiée du formulaire" ; break; case 3 : echo "Le fichier téléchargé est incomplet" break; 🎜>cas 4 : echo "Aucun fichier téléchargé "; break; } }else{ if( ! is_dir('./upfile/') ) mkdir('. /upfile/'); $path=' ./upfile/'.time().$_FILES['up_picture' ][ 'name' ]; [ 'tmp_name' ] )){ if( !move_uploaded_file( $_FILES['up_picture' ][ 'tmp_name' ] ,$path )){ echo "Le téléchargement a échoué !" }else{; echo "File".time().$ _FILES['up_picture' ][ 'name' ] ."Téléchargement réussi, la taille est : ".$_FILES['up_picture' ][ 'size' ] ; } }else{ echo "Télécharger le fichier ".$_FILES['up_picture' ][ 'name' ]."Illégal" } } } ?> ;
4. Téléchargement de fichiers
Nous introduisons ici le téléchargement de fichiers via http, principalement en utilisant la fonction header(). La fonction header() est une fonction HTTP. Sa fonction est d'envoyer l'en-tête du document HTML au navigateur via HTTP et d'indiquer au navigateur comment traiter cette page. void header(string string[,bool replace[,int http_respone_code]]);//Le paramètre string spécifie l'en-tête à envoyer. Le paramètre replace contrôle si les en-têtes similaires sont remplacés ou ajoutés si plusieurs en-têtes sont envoyés à la fois. Si faux, plusieurs en-têtes du même type sont forcés d’être envoyés. La valeur par défaut est true. Le paramètre http_respone_code force le code de réponse HTTP à être défini sur la valeur spécifiée : Les étapes de téléchargement sont les suivantes : a) : Spécifiez le type MIME du fichier via "Content-Type". b) : Décrivez le fichier via "Content-Disposition", la valeur "attachment;filename="test.jpg"" indique qu'il s'agit d'un Fujian, et précise également le nom du fichier téléchargé. c) : Définissez la taille du fichier téléchargé via "Content-Length". d) : Lisez le contenu du fichier via la fonction readfile(). Par exemple :
Copier le code
Le code est le suivant :header(' Content-Type : image/jpg'); header(' Content-Disposition:attachment;filename="test.jpg" ');
Étape 1 : Configurez l'option du fichier php.ini allow_url_fopen sur on. Le paramètre est activé par défaut, permettant l'ouverture des fichiers distants spécifiés par http et ftp. Si Allow_url_fopen est désactivé, les fichiers distants ne peuvent pas être ouverts. Étape 2 : Utilisez la fonction fopen() pour lire le contenu du fichier. Créez les ressources souhaitées en fonction du contenu et enregistrez-les localement.
ps : Pour plus de méthodes d'extension des opérations sur les fichiers et les opérations sur les répertoires dans le fichier de configuration php.ini, veuillez vous référer au guide PHP officiel.
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn