Gestion upload avatar, probleme de rafraichissement aprés up

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Gestion upload avatar, probleme de rafraichissement aprés up

Re: Gestion upload avatar, probleme de rafraichissement apré

par Berzemus » 06 janv. 2012, 22:34

Ou alors tu inclus dans le nom du fichier avatar un timestamp.

Re: Gestion upload avatar, probleme de rafraichissement apré

par Calimero » 06 janv. 2012, 18:33

Tu peux "faire semblant" de changer le nom de l'image sans pour autant le faire réellement. Il te suffit d'ajouter une chaîne de paramètres derrière le nom de l'image dans l'url comme tu le ferais pour un script php :

Code : Tout sélectionner

/un/chemin/une_image.jpg?parametre=valeur_unique
Les paramètres n'affecteront pas l'accès à l'image sur le serveur, cependant pour ton navigateur il s'agira d'un contenu différent et le rafraîchissement sera ainsi forcé.

Gestion upload avatar, probleme de rafraichissement aprés up

par voodoonet » 05 janv. 2012, 15:56

Bonjour,
J'utilise un vieux CMS pour un intranet, et je mets a jour le panneau utilisateur.
Je souhaite rajouter l'upload d'avatar.
J'ai récupéré des bouts de scripts avec jquery que j'ai adapté.
Tout marche nickel, sauf que l'image ne ne mets pas a jour immediatement.
Je penses que c'est parceque je garde toujours le meme nom d'image, alors ie ne rafraichit pas le cache...
l'image est toujours nommée id_utilisateur.jpg

voila mon code:

Code : Tout sélectionner

<script type='text/javascript'> $(document).ready(function(){ $('#image_upload_form').submit(function(){ $('div#ajax_upload_demo img').attr('src','modules/Your_Account/images/loading.gif'); }); $('iframe[name=upload_to]').load(function(){ var result = $(this).contents().text(); if(result !=''){ if (result == 'Err:big'){ $('div#ajax_upload_demo img').attr('src','modules/Your_Account/images/avatar_big.jpg'); return; } if (result == 'Err:format'){ $('div#ajax_upload_demo img').attr('src','modules/Your_Account/images/avatar_invalid.jpg'); return; } $('div#ajax_upload_demo img').attr('src',$(this).contents().text()); $('#ajax_upload_demo').fadeOut('slow').fadeIn('slow'); } }); }); </script> ... $avatarfile ='files/Users/'.$user.'/avatar/'.$uid.'.jpg'; if (!is_file($avatarfile)){ $avatarfile='modules/Your_Account/images/avatar_no.jpg'; } echo "<div id='ajax_upload_demo'> <form id='image_upload_form' method='post' enctype='multipart/form-data' action='modules/Your_Account/user/modules/add_avatar.php' target='upload_to'> <p><img src='". $avatarfile."' /></p> <p><input type='file' id='file_browse' name='image'/> <input type='submit' value='Submit'></p> <input type='hidden' name='username' value='".$user."'> <input type='hidden' name='uid' value='".$uid."'> </form> <iframe name='upload_to'> </iframe> </div>";
et le add_avatar.php:

Code : Tout sélectionner

if (count($_FILES)<1){ die('Err:format'); } $file = $_FILES['image']; $username = $_POST['username']; $uid = $_POST['uid']; $file = new File($file); $max_size = 1024000; $type = 'image'; $path = "../../../../files/Users/".$username."/avatar/"; $keep_name = true; $filename = $uid.'.jpg'; if ($file->type != $type){ die('Err:format'); } if ($file->size()>$max_size){ die('Err:big'); } $result = $file->copyFromTemp($path,$filename); if ($result){ die($result); } die('Err:format'); class File{ var $name = null; var $temp_name = null; var $extension = null; var $type = null; var $size = null; function File($file = null){ # $file is an entry from $_FILES if ($file != null){ $this->name = $file['name']; $this->temp_name = $file['tmp_name']; $this->size = $file['size']; $type = explode('/',$file['type']); $this->type = $type[0]; $this->extension = substr($this->name,strrpos($this->name, ".")+1); } else { return null; } } function name(){ return $this->name; } function type(){ return $this->type; } function size(){ return $this->size; } function tmp_name(){ return $this->temp_name; } function extension(){ return $this->extension; } function randomName(){ return md5(rand()) . "." .$this->extension; } function copyFromTemp($path,$filename){ if (move_uploaded_file($this->temp_name,$path.$filename)){ return $path.$filename; } return false; } }
Si je fait un f5 aprés l'upload j'ai bien la bonne image qui apparait...
Je penses que je m'y prends mal en fait...
Quelqu'un peut m'eclairer?
Merci d'avance
VooDoo