par
Moker » 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 :
- 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)
je desire afficher l'image soumise tout au long du script, pour l'etape 3 aucun probleme car je connait le chemin de l'image :
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

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 :
[list]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)[/list]
je desire afficher l'image soumise tout au long du script, pour l'etape 3 aucun probleme car je connait le chemin de l'image :
[php]echo "<img src=\"".$_SERVER["DOCUMENT_ROOT"]."/trombi/photos/".$_POST["photo"]."\" />";[/php]
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 :
[php]echo "La photo à bien été envoyée, veuillez valider le formulaire";[/php]
voici le script en question :
[php]<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>[/php]
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 :wink: