Upload d'image avec affichage instantané de l'image.

Répondre
yearling
le 27/07/2007 à 17:10
yearling
Bonjour à tous,

est-ce possible d'uploader une image et de l'afficher dans la même page une fois que l'image a été uploadée.

Merci d'avance

Thierry
Michel_57
le 27/07/2007 à 17:40
Michel_57
tu upload comment ton image ? tu le fais via un formulaire html non ? avec un bouton submit. donc le formulaire est envoyé soit :

- à la même page que celle de l'affichage du formulaire, et donc tu affiche ton image fraichement uploadée au rechargement de la page, je ne saisis pas où est le problème.

- à une autre page de traitement, dans ce cas tu peux faire une redirection après le traîtement vers la page du formulaire.

ma réponse semble trop simple, j'ai peut-être mal compris la question, essaie d'être plus clair.
Merci LEPHPFACILE et tous ses membres :)
yearling
le 27/07/2007 à 18:46
yearling
Bonjour Michel,

tout d'abord, merci pour ta réponse à mon message.

Donc, je veux simplement afficher l'image que j'ai uploadée dans la même page.

Voici mon code :

<html>
<head>
<title>Upload</title>
</head>

<body>

<table width="100%" border="0">
<tr>
<td>
<form name="upload" method="post" action="" enctype="multipart/form-data">
<input type="file" name="fichier_upload" id="fichier_upload"><br>
<input type="submit" name="Submit" value="Uploader">
</form>
</td>
</tr>
<tr>
<td>
<?php
if(!empty($_FILES['fichier_upload']['name']))
{
// on récupère les infos du fichier à uploader
$fichier_temp = $_FILES['fichier_upload']['tmp_name'];
$fichier_nom = $_FILES['fichier_upload']['name'];

// on défini les dimensions et le type du fichier
list($fichier_larg, $fichier_haut, $fichier_type, $fichier_attr)=getimagesize($fichier_temp);

// infos de contrôle du fichier
$fichier_poids_max = 500000;
$fichier_h_max = 2448;
$fichier_l_max = 3264;

// dossier de destination
$fichier_dossier = '../Documents/';

// extension du fichier
$fichier_ext = substr($fichier_nom,strrpos( $fichier_nom, '.')+1);

// on renomme le fichier
$fichier_date = date("ymdhis");
$fichier_n_nom = $fichier_date.".".$fichier_ext;

// on vérifie s'il y a bien un fichier à uploader
if (!empty($fichier_temp) && is_uploaded_file($fichier_temp))
{
// on vérifie le poids du fichier
if (filesize($fichier_temp)<$fichier_poids_max)
{
// types de fichiers autorises 1=gif / 2=jpg / 3=png
if (($fichier_type===1) || ($fichier_type===2) || ($fichier_type===3))
{
// on vérifie si l'image n'est pas trop grande
if (($fichier_larg<=$fichier_l_max) && ($fichier_haut<=$fichier_h_max))
{
// si le fichier est ok, on l'upload sur le serveur
if (move_uploaded_file($fichier_temp, $fichier_dossier.$fichier_n_nom))
{
echo "Le fichier a été uploadé avec succès<br />";
echo '<a href="'.$fichier_dossier.$fichier_n_nom.'"><img src="'.fichier_dossier.$fichier_n_nom.'"></a><br />';
}
else
echo "Le fichier n'a pas pu être uploadé<br />";
}
else
echo "Le fichier est trop grand<br />";
}
else
echo "Le fichier n'a pas le bon format<br />";
}
else
echo "Le fichier est trop lourd<br />";
}
else
echo "Pas de fichier à uploader<br />";
}
?>

</td>
</tr>
</table>
</body>
</html>


J'obtiens le message qui me dit que mon image a été uploadée avec succès mais l'image ne s'affiche pas. J'ai mon image avec une croix rouge.

En plus, quand j'essaie de rappeler la page, il me met :

Warning: Page has Expired The page you requested was created using information you submitted in a form. This page is no longer available. As a security precaution, Internet Explorer does not automatically resubmit your information for you.

To resubmit your information and view this Web page, click the Refresh button.

Que puis-je faire pour éviter ce problème.

Merci d'avance

Thierry
moogli
le 27/07/2007 à 19:10
moogli
salut,

est ce que echo fichier_dossier.$fichier_n_nom; retourne quelque chose de coéhérent avec ce que tu attend ?

$fichier_dossier = '../Documents/';

je suppose que ce script est dans un répertoire sous la racine (au minimum 1) ?

tu peut avoir le type mime du fichier avec le champ type du table dans $_FILES.

quelque info la

@+
Il en faut peu pour être heureux !!!!!
yearling
le 27/07/2007 à 19:22
yearling
Bonsoir Moogli,

merci également pour ta réponse.

Le répertoire dans lequel je place l'image est un répertoire faisant partie du répertoire racine.

En fait, quand je clique sur l'image dont j'en ai également fait un lien, il m'affiche bien l'image.

J'ai également ajouté le code suivant :

<input type="image" border="0" name="imageField" src="<? print fichier_dossier.$fichier_n_nom; ?>">
mais, malheureusement, l'image ne s'affiche toujours pas.

As-tu déjà eu l'occasion de développer une page qui "upload" un fichier et l'affiche dans la même source ?

Merci d'avance pour ton aide

Thierry
moogli
le 27/07/2007 à 19:39
moogli

As-tu déjà eu l'occasion de développer une page qui "upload" un fichier et l'affiche dans la même source ?


A tu lu le lien en bas que ma réponse ?
Si oui tu pourra constater que c'est le cas :)

est ce que tu a le bon chemin du fichier dans le src ?

est ce que l'on peut voir se script "en ligne" ?
(je n'est pas de quoi tester ton code sous main ;) )

ps utilise <?php plutot que <? afin de na pas être confronter à un problème sur une version future de php !

@+

@+
Il en faut peu pour être heureux !!!!!
Michel_57
le 27/07/2007 à 19:48
Michel_57
# echo '<a href="'.$fichier_dossier.$fichier_n_nom.'"><img src="'.fichier_dossier.$fichier_n_nom.'"></a><br />';

il manque un $
Merci LEPHPFACILE et tous ses membres :)
yearling
le 27/07/2007 à 19:50
yearling
Bonsoir Moogli,

merci de nouveau pour ton aide.

J'ai bien le lien qui s'affiche dans la barre des tâches et j'ai également le bon chemin d'accès dans src.

Par contre, je me demande si c'est possible de faire cela en php. Ne faudrait-il pas plutôt utiliser AJAX ?

Par contre, je n'ai pas le lien dont tu me parles dans ton message.

Merci d'avance

Thierry
yearling
le 27/07/2007 à 19:54
yearling
Bonsoir Michel,

merci énormément pour ton aide.

C'était une bétise mais le principal, c'est que ça marche.

Encore merci à toi et à Moogli pour votre aide.

Thierry
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours