Upload PHP
Manipulation de fichiers en Upload
Variable $_FILES[]
Pour proposer le téléchargement de fichier, on utilise la variable Php prédéfinie $_FILES[] avec la fonction move_uploaded_file qui permet de transférer le fichier du répertoire temporaire vers un répertoire de destination.
Exemple de téléchargement de fichier (une photo) avec index.html et upload.php :
<html><head></head>
<body>
<form action="upload.php" method="post">
<input type="hidden" name="max_file_size" value="50000">
<input type="file" name="monfichier">
<input type="submit" value="Envoyer">
</form>
</body></html>
Attention, exemple à tester avec des images légère (< 50 ko). Sinon, augmentez l'attribut "value" de la balise "max_file_size" (mais méfiez-vous des mauvais plaisantins :-)
<?php
// Affichage d'infos facultatives
if ( isset($_FILES["monfichier"]["name"]) && $_FILES["monfichier"]["error"] <= 0) {
echo "Nom du fichier: " . $_FILES["monfichier"]["name"] . "<br>";
echo "Type mime: " . $_FILES["monfichier"]["type"] . "<br>";
echo "Taille: " . ($_FILES["monfichier"]["size"] / 1024) . " Kb<br>";
}
else {
echo "Erreur numéro: " . $_FILES["monfichier"]["error"] . "<br>";
}
// Enregistrement du fichier
if ( (isset($_FILES['monfichier'])) && ($_FILES['monfichier']['error'] == UPLOAD_ERR_OK)) {
$destination = "C:\Program Files\EasyPHP-5.3.3\www\stage\images\\";
move_uploaded_file($_FILES['monfichier']['tmp_name'], $destination.$_FILES['monfichier']['name']);
echo "Fichier ". $_FILES['monfichier']['name'] ." téléchargé avec succès.\n<br>";
}
else {
echo "Fichier NIET téléchargé !<br>";
}
// récupération des données (pour affichage)
$nom_fichier = $_FILES['monfichier']['name'];
$adresse_fichier = "images\\".$_FILES['monfichier']['name'];
// Affichage du fichier (exemple avec une image)
echo "<img src='".$adresse_fichier."'>";
Si le script affiche Erreur numéro: 2: taille de fichier trops importante, sinon voir les numéros d'erreur. Si problèmes, vérifiez dans php.ini (Configuration/PHP) les différentes directives du File Uploads. Pour une utilisation en ligne de ce script, remplacez les paramètres de la variable "$destination" par $destination = '/var/www/stage/stage/';
Base de donnée
Pour un stockage dans une table de base de donnée MySQL, il suffit de rajouter le code suivant au fichier "upload.php"
Stockage dans une base de donnée (suite du "upload.php")
$nom_fichier = $_FILES['monfichier']['name'];
$id_client = 2; // l'id du client est récupérée en ammont (par un $_SESSION['login'])
// on stock le nom du fichier dans la base
require_once("config/variables_sensibles.php");
$requete = "UPDATE ".$table." SET photo_client='".$nom_fichier."' WHERE id_client = '".$id_client."'";
$resultat = mysql_query($requete);
if ($resultat) {
echo "IT'S IN THE BOX :-)";}
else { echo "IT'S NOT IN THE BOX :-("; }
}