Dans le développement de sites Web, le téléchargement et le téléchargement de fichiers sont des fonctions très courantes. Qu'il s'agisse d'images, de documents ou de packages compressés, de nombreux sites Web proposent des entrées pour le téléchargement et le téléchargement. Cet article présentera en détail comment utiliser PHP pour écrire une fonction simple de téléchargement et de téléchargement de fichiers, comprenant des formulaires HTML, une logique de téléchargement et des scripts de téléchargement.
Tout d’abord, nous devons créer un formulaire sur la page permettant aux utilisateurs de sélectionner et de télécharger des fichiers :
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="télécharger">
</form>Dans le code ci-dessus :
Ensuite, écrivez la logique backend dans le fichier upload.php :
<?php
$targetDir = "uploads/"; // télécharger文件的存储目录
$targetFile = $targetDir . basename($_FILES["file"]["name"]); // télécharger后的文件路径
// Vérifier le type de fichier
$fileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
$allowedTypes = array("jpg", "jpeg", "png", "gif");
if (!in_array($fileType, $allowedTypes)) {
echo "只允许télécharger图片文件!";
exit;
}
// Déplacer les fichiers vers le répertoire spécifié
if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) {
echo "文件télécharger成功!";
} else {
echo "文件télécharger失败!";
}
?>Le code ci-dessus déplace le fichier temporaire vers le dossier cible via la fonction move_uploaded_file() et effectue un contrôle de sécurité sur le type de fichier avant le téléchargement. Dans le développement réel, la sécurité peut être encore améliorée, par exemple en vérifiant la taille des fichiers, en renommant les fichiers de manière aléatoire, etc.
Une fois le fichier téléchargé, nous pouvons afficher une liste de fichiers disponibles en téléchargement sur la page. Par exemple:
<?php
$files = glob("uploads/*"); // obteniruploadsTous les fichiers du répertoire
foreach ($files as $file) {
$fileName = basename($file);
echo "<a href='download.php?file={$fileName}'>{$fileName}</a><br>";
}
?>Le code ci-dessus utilise la fonction glob() pour analyser le répertoire de téléchargement et générer un lien hypertexte de téléchargement cliquable pour chaque fichier.
Ensuite, écrivez la logique de traitement du téléchargement dans le fichier download.php :
<?php
$fileName = $_GET["file"];
$filePath = "uploads/" . $fileName;
if (file_exists($filePath)) {
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename={$fileName}");
readfile($filePath);
} else {
echo "Le fichier n'existe pas!";
}
?>Le script vérifie si le fichier existe via file_exists() et définit l'en-tête de réponse pour permettre au navigateur de déclencher le téléchargement. Afin d'éviter les problèmes de sécurité, il est recommandé d'ajouter un filtrage des noms de fichiers et une vérification des autorisations à l'environnement de production.
Grâce aux exemples de cet article, vous pouvez rapidement maîtriser les méthodes de base d'implémentation des fonctions de téléchargement et de téléchargement de fichiers en PHP. Bien que l'exemple soit relativement basique, il convient très bien aux débutants pour comprendre le processus de traitement des fichiers. Dans les projets réels, il peut être étendu sur cette base, par exemple en augmentant les limites de taille des fichiers, en téléchargeant des enregistrements de journaux, en contrôlant les autorisations, etc., pour améliorer la sécurité et la stabilité.