Téléchargement de fichier (UPLOAD)
- CODE PHP
- Formulaire HTML
- Page HTML+PHP en entier (sans commentaire)
- Commentaires
- Télécharger le script `upload.php`
N.B.: le fichier s'appelle upload.php dans l'exemple.
I. CODE PHP
<?php if ( !defined('BASE_DIR') ) { define('BASE_DIR', $_SERVER['DOCUMENT_ROOT'].'/'); } echo '<?xml version="1.0" encoding="iso-8859-1"?>'."\n"; // variable affichant un message de confirmation ou d'erreur $strMsg = ''; // Détection d'un clique sur le bouton 'cmdupload' // si le bouton a été cliqué et que sa valeur n'est pas vide if ( isset($_POST['cmdupload']) && !empty($_POST['cmdupload']) ) { // exécution de la fonction de chargement avec le nom du champ input if ( fileUpload('fichier') ) $strMsg = '<p>Envoie avec succès du fichier </p>'; else $strMsg = '<p>Erreur lors de l\'envoi du fichier</p>'; } // fonction de téléchargement function fileUpload($pstrInputName) { $blnRetour = false; // regarder si la chaine n'est pas vide et que le fichier est bien // charger sur le serveur (dans un répertoire temporaire) if ( !empty($pstrInputName) && is_uploaded_file($_FILES[$pstrInputName]['tmp_name']) ) { /* Nom temporaire : $_FILES[$pstrInputName]['tmp_name']; Nom du fichier : $_FILES[$pstrInputName]['name']; Taille du fichier : $_FILES[$pstrInputName]['size']; Type Mime du fichier : $_FILES[$pstrInputName]['type']; */ // strRepertoire représente le dossier ou vous voulez mettre le fichier // par exemple, mettre 'images/' pour le mettre dans le répertoire images $strRepertoire = ''; $strNom = $_FILES[$pstrInputName]['name']; // construction du nom du fichier $strNomFichier = BASE_DIR.$strRepertoire.$strNom; // Déplacement du fichier $blnRetour = move_uploaded_file($_FILES[$pstrInputName]['tmp_name'], $strNomFichier); } return $blnRetour; } ?>
II. Formulaire HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Téléchargement d'un fichier </title> <meta name="auteur" content="YanSanMo" /> <meta name="source" content="http://www.example.com/" /> </head> <body> <h1>Téléchargement d'un fichier</h1> <!-- FORMULAIRE DE TELECHARGEMENT --> <!-- Obligatoire: Encryption du formulaire: multipart/form-data Champ input de type: FILE Champ hidden avec la propriété name à MAX_FILE_SIZE et la valeur exprimée en octets --> <form enctype="multipart/form-data" method="post" action="upload.php"> Fichier: <input type="file" name="fichier" size="35" /> <input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> <input type="submit" value="Envoyer" name="cmdupload" /> <input type="reset" value="Vider" /> </form> <!-- INSTRUCTION SUR L'USAGE DU FORMULAIRE --> <p>S.V.P. cliquez une <strong>seule fois</strong> et attendez le message de confirmation.</p> <!-- Affichage du message d'erreur ou de confirmation --> <?=$strMsg ?> </body> </html>
N.B.: En gras, les liens entre la page HTML et le script PHP.
III. Page HTML+PHP en entier (sans commentaire)
<?php if ( !defined('BASE_DIR') ) { define('BASE_DIR', $_SERVER['DOCUMENT_ROOT'].'/'); } echo '<?xml version="1.0" encoding="iso-8859-1"?>'."\n"; $strMsg = ''; if ( isset($_POST['cmdupload']) && !empty($_POST['cmdupload']) ) { if ( fileUpload('fichier') ) $strMsg = '<p>Envoie avec succès du fichier </p>'; else $strMsg = '<p>Erreur lors de l\'envoi du fichier</p>'; } function fileUpload($pstrInputName) { $blnRetour = false; if ( !empty($pstrInputName) && is_uploaded_file($_FILES[$pstrInputName]['tmp_name']) ) { $strRepertoire = ''; $strNom = $_FILES[$pstrInputName]['name']; $strNomFichier = BASE_DIR.$strRepertoire.$strNom; $blnRetour = move_uploaded_file($_FILES[$pstrInputName]['tmp_name'], $strNomFichier); } return $blnRetour; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Téléchargement d'un fichier </title> <meta name="auteur" content="YanSanMo" /> <meta name="source" content="http://www.example.com/" /> </head> <body> <h1>Téléchargement d'un fichier</h1> <form enctype="multipart/form-data" method="post" action="upload.php"> Fichier: <input type="file" name="fichier" size="35" /> <input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> <input type="submit" value="Envoyer" name="cmdupload" /> <input type="reset" value="Vider" /> </form> <p>S.V.P. cliquez une <strong>seule fois</strong> et attendez le message de confirmation.</p> <?=$strMsg ?> </body> </html>
IV. Commentaires
Script source de Nico: Forum PHP (10-07-2002 10:34)
La taille du fichier est limitée à 200ko par Multimania. Pourquoi alors ne pas utiliser les fonctions de FTP? Parce que ces fonctions sont inactives sur Multimania.
Après un micro-litige avec Philiweb tout s'est finalement bien réglé et tout le monde est content ;-). Je vous invite à faire un tour sur son site web...
Dans la fonction fileUpload(), on pourrait détecter le type
de fichier d'après le type-mime.
Voici un petit tableau des types que j'ai testé jusqu'à maintenant:
Extension | Type Mime | Description |
---|---|---|
.txt | text/plain | Document Texte |
.htm | text/html | Page HTML |
.gif | image/gif | Image GIF |
.jpg | image/pjpeg | Image JPEG |
.wml | text/vnd.wap.wml | WAP |
.svg | svg/xml | Document SVG |
.* | application/octet-stream | tous les fichiers binaire |