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>";
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;
}
}
Je penses que je m'y prends mal en fait...
Quelqu'un peut m'eclairer?
Merci d'avance
VooDoo