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
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]
<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]
et le add_avatar.php:
[code]
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;
}
}
[/code]
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