Comment permettre l'upload de fichiers sur mon site web (PHP + HTML)
L'upload de fichiers enrichit l'interactivité (site d'annonces, partage vidéo, CV…). Implémentation simple avec un formulaire HTML + script PHP.
Étape 1 : Formulaire HTML (uploadfile.html)
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>Upload</title></head><body>
<form action="uploadfile.php" method="post" enctype="multipart/form-data">
<input type="file" name="userfile" id="userfile">
<input type="submit" value="Envoyer le fichier">
</form>
</body></html>
Étape 2 : Script PHP (uploadfile.php)
<?php
$dossier_destination = "uploads/"; // Créez ce dossier et chmod 755/775
$fichier_cible = $dossier_destination . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $fichier_cible)) {
echo "Succès : " . htmlspecialchars(basename($_FILES['userfile']['name'])) . " uploadé.";
} else {
echo "Erreur lors de l'upload.";
}
?>
Important : L'attribut name="userfile" dans l'input HTML doit correspondre exactement à $_FILES['userfile'] en PHP.
Étape 3 : Déploiement et test
- Créez le dossier
uploads/sur votre serveur (même niveau que les scripts). - Donnez-lui les droits d'écriture :
chmod 755 uploads(ou 775 selon config). - Uploadez les deux fichiers sur votre serveur web (PHP activé).
- Testez : ouvrez
uploadfile.htmldans le navigateur → Choisissez fichier → Envoyer.
⚠️ Sécurité INDISPENSABLE (le code ci-dessus est MINIMAL)
- Validez le type MIME (
$_FILES['userfile']['type']) ET l'extension (liste blanche). - Limitez la taille (
upload_max_filesize,post_max_sizedans php.ini + vérif PHP). - Renommez le fichier (ex: hash + extension) pour éviter écrasement et exécution de scripts.
- Stockez hors racine web ou interdisez l'exécution PHP dans
uploads/(.htaccess :php_flag engine off). - Scannez antivirus si fichiers utilisateurs non de confiance.
