English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans ce tutoriel, vous apprendrez à utiliser PHP pour télécharger des fichiers sur un serveur Web distant.
Dans ce tutoriel, nous allons apprendre à utiliser un formulaire HTML simple et PHP pour téléverser des fichiers sur un serveur distant. Vous pouvez téléverser n'importe quel type de fichier, par exemple des images, des vidéos, des fichiers ZIP, des documents Microsoft Office, des fichiers PDF, des fichiers exécutables et d'autres types de fichiers variés.
L'exemple suivant créera un formulaire HTML simple pouvant être utilisé pour téléverser des fichiers.
!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Formulaire de téléversement de fichier</title> </head> <form action="upload-manager.html" method="post" enctype="multipart/formulaire-data"> <h2>Télécharger un fichier</h2> <label for="fileSelect">Nom de fichier :</label> <input type="file" name="photo" id="fileSelect"> <input type="submit" name="submit" value="Upload"> <p><strong>Remarque :</strong>Seuls les formats.jpg, .jpeg, .gif, .png sont autorisés, la taille maximale est5 MB.</p> </form> </html>
Attention :En plus desélection de fichierSauf les champs, le formulaire de téléversement doit également utiliserHTTP postméthode, et doit inclure un "enctype="multipart/formulaire-attribut "data". Cet attribut garantit que les données du formulaire sont codées en plusieurs segments MIME, ce qui est nécessaire pour téléverser de grandes quantités de données binaires (par exemple, des images, des fichiers audio, des vidéos, etc.).
Voici notre "Upload-Le code complet du fichier "manager.php". Il stockera définitivement le fichier téléversé dans le dossier "upload" et effectue quelques vérifications de sécurité de base, telles que le type de fichier et la taille du fichier, pour s'assurer que l'utilisateur téléverse le bon type de fichier dans les limites autorisées.
<?php //Vérifier si le formulaire a été soumis if($_SERVER["REQUEST_METHOD"] == "POST"){ // Vérifier si le fichier a été téléversé avec succès if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0){ $allowed = array("jpg" => "image"}/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png"); $filename = $_FILES["photo"]["name"]; $filetype = $_FILES["photo"]["type"]; $filesize = $_FILES["photo"]["size"]; // Vérifiez l'extension du fichier $ext = pathinfo($filename, PATHINFO_EXTENSION); if(!array_key_exists($ext, $allowed)) die("Erreur : Veuillez choisir un format de fichier valide."); // Vérifiez la taille du fichier-Taille maximale5MB $maxsize = 5 * 1024 * 1024; if($filesize > $maxsize) die("Erreur : La taille du fichier dépasse la limite autorisée."); // Vérifiez le type MIME du fichier if(in_array($filetype, $allowed)){ // Vérifiez l'existence du fichier avant de l'upload if(file_exists("upload/. $filename)){ echo $filename . " existe déjà."; } else { move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/. $filename); echo "Votre fichier a été téléversé avec succès."; } } else { echo "Il y a eu un problème lors de l'upload de votre fichier. Veuillez réessayer."; } } else { echo "Erreur : " . $_FILES["photo"]["error"]; } } ?>
Attention :Ce script empêche l'upload de fichiers portant le même nom que les fichiers existants dans le même dossier. Cependant, si vous souhaitez autoriser cela, il suffit d'ajouter une chaîne aléatoire ou un timestamp avant le nom de fichier, par exemple $filename = time() . '_' . $_FILES["photo"]["name"];
Vous pourriez vouloir savoir de quoi s'agit ce code. Bon, laissons-nous examiner chaque partie de cet exemple de code pour mieux comprendre ce processus.
Une fois le formulaire soumis, les informations concernant le téléversement de fichier peuvent être accédées via l'array superglobale PHP $_FILES. Par exemple, notre formulaire de téléversement contient un champ de sélection de fichier nommé photo (c'est-à-dire name = "photo"), si un utilisateur utilise ce champ pour téléverser un fichier, nous pouvons obtenir ses détails, tels que le nom, le type, la taille, le nom temporaire, ou toute erreur qui s'est produite lors de l'essai de téléversement via l'array associatif $FILES["photo"], comme suit :
$_FILES["photo"]["name"] — Cette valeur de tableau spécifie le nom original du fichier, y compris l'extension, mais sans le chemin du fichier.
$_FILES["photo"]["type"] — Cette valeur de tableau spécifie le type MIME du fichier.
$_FILES["photo"]["size"] — Cette valeur de tableau spécifie la taille du fichier en octets.
$_FILES["photo"]["tmp_name"] — Cette valeur de tableau spécifie le nom temporaire, y compris le chemin complet attribué au fichier après son téléversement sur le serveur.
$_FILES["photo"]["error"] — Cette valeur de tableau spécifie l'erreur ou le code de statut associé au téléversement de fichier, par exemple, 0 s'il n'y a pas d'erreur.
Les exemples de code PHP ci-dessous afficheront uniquement les détails du fichier téléversé et le stockeront dans le répertoire temporaire du serveur Web.
<?php if($_FILES["photo"]["error"] > 0) { echo "Erreur: " . $_FILES["photo"]["error"] . "<br>"; } else { echo "Nom du fichier: " . $_FILES["photo"]["name"] . "<br>"; echo "Type de fichier: " . $_FILES["photo"]["type"] . "<br>"; echo "Taille du fichier: " . ($_FILES["photo"]["size"]; / 1024) . " KB<br>"; echo "Stocké dans: " . $_FILES["photo"]["tmp_name"]; } ?>
Avis :Après le téléversement réussi du fichier, ce fichier sera automatiquement stocké dans le répertoire temporaire du serveur. Pour stocker ce fichier de manière permanente, vous devez utiliser la fonction move_uploaded_file() de PHP pour le déplacer du répertoire temporaire à l'emplacement permanent.