formulaire d'upload/affichage d'image
Posté : 03 août 2006, 00:46
bonsoir,
pourriez vous m'aider à terminer un formulaire d'upload d'image?
dites moi si je me trompe mais l'upload de fichier se passe de la maniere suivante :
Mercid'avance
pourriez vous m'aider à terminer un formulaire d'upload d'image?
dites moi si je me trompe mais l'upload de fichier se passe de la maniere suivante :
- 1. Affichage du formulaire d'upload (demande utilisateur avec la balise input type="file")
2. Memorisation temporaire du fichier (1er validation du formulaire)
3. Deplacement et stockage du fichier temporaire (2em validation du formulaire)
echo "<img src=\"".$_SERVER["DOCUMENT_ROOT"]."/trombi/photos/".$_POST["photo"]."\" />";
mais pour l'etape 2, comme l'image n'est encore q'un fichier temporaire, il faut que l'utilisateur valide une nouvelle fois le formulaire :
echo "La photo à bien été envoyée, veuillez valider le formulaire";
voici le script en question :<form method="post" enctype="multipart/form-data">
<?php
// Si aucune photo n'est memorisée dans le formulaire
if(!isset($_POST["photo"])){
// Si aucune photo n'est uploadée ou une erreur est survenue pendant l'upload
if(!isset($_FILES["photo"]) || $_FILES["photo"]["error"] != 0){
// Demande de la photo
echo '<input type="file" name="photo" size="30">';
}else{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
$dest_dossier = $_SERVER["DOCUMENT_ROOT"].'/trombi/photos/';
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) ){
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['photo']['tmp_name']) and filesize($_FILES['photo']['tmp_name']) > $taille_max){
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// copie du fichier
if(!isset($erreur)){
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// copie du fichier
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
// Affiche la photo uploadée
echo "La photo à bien été envoyée, veuillez valider le formulaire";
// Memorise le nom de la photo dans le formulaire
echo "<input type=\"hidden\" name=\"photo\" value=\"$dest_fichier\" />\n";
}
}
}else{
echo "<img src=\"".$_SERVER["DOCUMENT_ROOT"]."/trombi/photos/".$_POST["photo"]."\" />";
echo "<input type=\"hidden\" name=\"photo\" value=\"".$_POST["photo"]."\" />\n";
}
?>
</form>
auriez vous une idée pour afficher l'image dés la 1er soumission du formulaire (lorsque l'image n'est encore qu'un fichier temporaire) ?Mercid'avance