Maison > Article > développement back-end > Technologie de téléchargement et de téléchargement de fichiers en PHP
PHP est un langage de programmation largement utilisé dans le développement Web. Il se caractérise par sa simplicité, sa facilité d'apprentissage, sa forte évolutivité et son cycle de développement court, il est donc largement apprécié des développeurs. Dans le développement Web, le téléchargement de fichiers est une exigence courante, et PHP fournit des fonctions et des classes intégrées pour nous aider à implémenter ces fonctions facilement. Cet article présentera la technologie de téléchargement et de téléchargement de fichiers en PHP.
1. Technologie de téléchargement de fichiers
En HTML, on peut utiliser le type de balise d'entrée Créez un élément de formulaire de téléchargement de fichier avec l'attribut "file", comme indiqué ci-dessous :
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="上传文件" name="submit"> </form>
Il convient de noter que le formulaire doit être soumis à l'aide de la méthode POST et que l'attribut enctype doit être défini. à "multipart/form-data", afin que le formulaire puisse prendre en charge le téléchargement de fichiers. En même temps, nous devons créer un élément d'entrée avec un attribut de nom "fileToUpload". Cette valeur d'attribut sera utilisée dans le code PHP suivant pour obtenir le fichier téléchargé.
Une fois que l'utilisateur a soumis le formulaire pour télécharger le fichier, nous devons le traiter en arrière-plan. En PHP, nous pouvons utiliser le tableau super global $_FILES pour obtenir les fichiers téléchargés.
<?php $target_dir = "./uploads/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); // 检查文件是否是图片 if(isset($_POST["submit"])) { $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false) { echo "File is an image - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "File is not an image."; $uploadOk = 0; } } // 检查文件是否已经存在 if (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = 0; } // 检查文件大小 if ($_FILES["fileToUpload"]["size"] > 500000) { echo "Sorry, your file is too large."; $uploadOk = 0; } // 允许上传的文件类型 if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0; } // 如果所有检查都通过,上传文件 if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; } else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; } } ?>
Dans le code ci-dessus, nous définissons d'abord un répertoire $target_dir pour stocker les fichiers téléchargés, puis générons un chemin de fichier cible $target_file basé sur le nom de fichier téléchargé par l'utilisateur et $target_dir. Ensuite, nous avons effectué une série de vérifications sur le fichier téléchargé, telles que :
$file = "./downloads/test.txt"; // 设置HTTP头信息以告诉浏览器下载文件 header("Content-disposition: attachment;filename=".basename($file)); header("Content-type: application/octet-stream"); header("Content-Length: ".filesize($file)); header("Pragma: no-cache"); header("Expires: 0"); // 将文件内容读取并输出给浏览器 readfile($file);# 🎜🎜#Dans le code ci-dessus, nous spécifions d'abord un fichier $file et utilisons la fonction header() pour définir les informations d'en-tête HTTP. Parmi eux, Content-disposition spécifie le nom du fichier téléchargé, Content-type spécifie le type de fichier, Content-Length spécifie la taille du fichier et Pragma et Expires sont utilisés pour empêcher le navigateur de mettre en cache le fichier téléchargé. Enfin, nous utilisons la fonction readfile() pour lire le contenu du fichier spécifié et le sortir vers le navigateur client, réalisant ainsi la fonction de téléchargement de fichier.
Télécharger les fichiers générés dynamiquement
$content = "Hello, world!"; $filename = "test.txt"; $file = "./downloads/".$filename; // 将内容写入到文件中 $handle = fopen($file, "w"); fwrite($handle, $content); fclose($handle); // 返回下载文件给客户端 header("Content-disposition: attachment;filename=".$filename); header("Content-type: application/octet-stream"); header("Content-Length: ".filesize($file)); header("Pragma: no-cache"); header("Expires: 0"); readfile($file); // 下载完成后删除服务器端的文件 unlink($file);
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!