Maison >développement back-end >tutoriel php >Comment gérer le téléchargement de fichiers en PHP ?
Avec le développement continu de la technologie Internet, la fonction de téléchargement de fichiers est devenue un élément essentiel de nombreux sites Web. Dans le langage PHP, nous pouvons gérer les téléchargements de fichiers via certaines bibliothèques de classes et fonctions. Cet article se concentrera sur la méthode de traitement du téléchargement de fichiers en PHP.
1. Paramètres du formulaire
Dans le formulaire HTML, nous devons définir l'attribut enctype sur "multipart/form-data" pour prendre en charge le téléchargement de fichiers. Le code est le suivant :
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"/> <input type="submit" value="上传"/> </form>
Parmi eux, l'attribut type de la balise d'entrée est "file" et l'attribut name est "file", qui est utilisé pour spécifier le nom du fichier téléchargé.
2. Traitement du téléchargement de fichiers PHP
En PHP, nous pouvons utiliser la variable globale $_FILES pour traiter les téléchargements de fichiers. En supposant que le fichier téléchargé dans notre formulaire s'appelle "fichier", alors en PHP, vous pouvez obtenir les informations sur le fichier téléchargé via $_FILES['file']. Le tableau
$_FILES contient cinq éléments :
Ensuite, nous pouvons utiliser la fonction move_uploaded_file() pour déplacer le fichier téléchargé vers le dossier spécifié. Le code est le suivant :
$target_dir = "uploads/"; //上传文件的目标文件夹 $target_file = $target_dir . basename($_FILES["file"]["name"]); //上传文件的完整路径 if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) { echo "文件上传成功!"; } else { echo "文件上传失败!"; }
Dans le code ci-dessus, la variable $target_dir spécifie le dossier cible du fichier téléchargé, et la variable $target_file contient le chemin complet du fichier téléchargé. Nous pouvons utiliser la fonction move_uploaded_file() pour déplacer les fichiers temporaires vers le répertoire spécifié. Renvoie vrai si le mouvement réussit, faux sinon.
Lors du téléchargement de fichiers, afin de garantir la sécurité des fichiers, nous devons effectuer certaines vérifications et filtres sur les fichiers téléchargés. Par exemple, nous pouvons utiliser la fonction is_uploaded_file() pour vérifier si le fichier téléchargé provient réellement du client. Le code est le suivant :
if(is_uploaded_file($_FILES['file']['tmp_name'])){ //处理上传文件 }else{ echo "非法的文件上传!"; }
Nous pouvons également utiliser la fonction getimagesize() pour obtenir la largeur et la hauteur de l'image téléchargée. Le code est le suivant :
if (is_uploaded_file($_FILES['file']['tmp_name'])) { $image_info = getimagesize($_FILES['file']['tmp_name']); echo "图片宽度:".$image_info[0]."<br/>"; echo "图片高度:".$image_info[1]."<br/>"; echo "图片类型:".$image_info[2]."<br/>"; } else { echo "非法的文件上传!"; }
3. Limiter la taille des fichiers téléchargés
La limite par défaut de la taille des fichiers pouvant être téléchargés en PHP est de 2 Mo, mais nous pouvons également modifier cette limite en modifiant le fichier de configuration ou en le définissant en PHP. Par exemple, dans le fichier php.ini, nous pouvons définir upload_max_filesize et post_max_size pour limiter la taille des fichiers téléchargés.
Si nous voulons définir la valeur maximale des fichiers téléchargés en PHP, nous pouvons utiliser la fonction ini_set() pour modifier les paramètres dans php.ini. Le code est le suivant :
//设置上传文件的最大值为10M ini_set("upload_max_filesize","10M"); ini_set("post_max_size","10M");
Nous pouvons également utiliser $_SERVER['CONTENT_LENGTH'] pour obtenir la longueur du contenu dans les informations d'en-tête de la demande du client afin de déterminer si le fichier téléchargé dépasse la taille spécifiée. Le code est le suivant :
if($_SERVER['CONTENT_LENGTH'] > MAX_SIZE){ echo "上传文件超过了指定大小!"; }
Dans la partie front-end, vous pouvez également utiliser le plug-in jQuery.uploadFile.js pour limiter la taille des fichiers uploadés. Le code est le suivant :
<input type="file" name="file" id="file"/> <script src="js/jquery-1.12.4.min.js"></script> <script src="js/jquery.uploadfile.js"></script> <script> $("#file").uploadFile({ url: "upload.php", //处理文件上传的PHP脚本 maxFileSize: 1024*1024*5, //最大上传文件的大小,此处为5M }); </script>
4. Gestion des erreurs de téléchargement de fichiers
Lors du téléchargement de fichiers, vous pouvez rencontrer des erreurs. Par exemple, le fichier téléchargé est trop volumineux, le type de fichier téléchargé n'est pas autorisé, le dossier cible n'existe pas, etc. Nous devons gérer ces erreurs pour améliorer l'expérience utilisateur et l'efficacité des téléchargements de fichiers.
Certains codes d'erreur sont définis en PHP pour faciliter notre jugement et notre traitement des erreurs. Par exemple :
Nous pouvons utiliser des instructions switch pour gérer ces erreurs. Le code est le suivant :
switch ($_FILES['file']['error']) { case UPLOAD_ERR_OK: //上传成功 break; case UPLOAD_ERR_INI_SIZE: echo "上传的文件超过了php.ini中的配置。"; break; case UPLOAD_ERR_FORM_SIZE: echo "上传的文件超过了表单中的MAX_FILE_SIZE指定的值。"; break; case UPLOAD_ERR_PARTIAL: echo "上传的文件只有部分被上传。"; break; case UPLOAD_ERR_NO_FILE: echo "没有文件被上传。"; break; case UPLOAD_ERR_NO_TMP_DIR: echo "找不到临时文件夹。"; break; case UPLOAD_ERR_CANT_WRITE: echo "文件写入失败。"; break; default: echo "未知错误。"; break; }
Si vous souhaitez limiter les types de fichiers téléchargés à des types spécifiques, vous pouvez utiliser la fonction in_array() pour porter un jugement. Le code est le suivant :
$allowed_types = array('jpg', 'jpeg', 'gif', 'png'); //允许上传的文件类型 $filename = $_FILES['file']['name']; $ext = pathinfo($filename, PATHINFO_EXTENSION); //获取文件类型后缀 if (!in_array($ext, $allowed_types)) { echo "不允许上传此类型的文件。"; }
5. Résumé
Le téléchargement de fichiers est un problème courant dans le développement Web. PHP fournit une variété de méthodes et de fonctions pour gérer le téléchargement de fichiers. En plus des méthodes présentées ci-dessus, nous pouvons également utiliser des bibliothèques de classes PHP pour le traitement du téléchargement de fichiers, telles que PHP File Uploader (https://www.github.com/verot/class.upload.php) et FineUploader (https:/ / fineuploader.com/). Quelle que soit la méthode utilisée, nous devons garantir la sécurité et la validité des fichiers téléchargés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!