Bonjour
J'ai fait une barre de progression qui permet de savoir où l'upload en est lorsqu'on upload un fichier.
Elle marche très bien avec firefox mais pas avec IE.
IE ne me renvoie aucune erreur et fait régulièrement les rafrachissement, sauf que la barre ne bouge pas.
Voici le code du formulaire (index.php):
Le code javascript:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<html> <head> <script src = "scriptaculous"></script> <script src = "prototype.js"></script> <script src = "script.js"></script> <link rel="stylesheet" type="text/css" href="style.css"/> </head> <body> <form enctype="multipart/form-data" id="upload_form" action="" method="POST"> <input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="<?php echo uniqid()?>"/> <input type="file" id="test_file" name="test_file"/><br/> <input type="submit" onclick="alert($('progress_key').value);progress($(progress_key).value);" value="Upload!"/> <!--<input type="button" onclick="test($(progress_key).value);" value="affiche"/> --> </form> <div class = "barre" id = "barre"> <div class = "progressBar" id = "progressBar"></div> </div> </body> </html>
Le code de test.php (appelez par la fonction progress de javascript):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function progress(id) { elementHTML = document.getElementById('progressBar'); var url = "toto.php?id="+id; //alert(url); o_o = new Object(); o_o = {method:'get',frequency:1,asynchronous:true}; var laRequete = new Ajax.PeriodicalUpdater(elementHTML,url,o_o); }
Voici le code test.php (permet de générer l'image rectangle de ma barre de progression):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?php // print_r(apc_fetch("upload_$_GET[id]")); $tab = apc_fetch("upload_$_GET[id]"); if(isset($tab['total'])) { if($tab['total'] == 0){ //$tab['total'] = 1; $pourcentage = 1; } else { $pourcentage = round(($tab['current'] / $tab['total']) * 100); } } else { die('fatal error!'); } echo "<img src=\"test.php?pourcentage=".$pourcentage."\"/>"; ?>
Voila
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php $pourcent = $_GET['pourcentage']; header("Content-type: image/png"); $x = $pourcent*2; //largeur de mon image en PIXELS uniquement ! $y = 15; //hauteur de mon image en PIXELS uniquement ! $image = imagecreatetruecolor($x,$y); $couleur = imagecolorallocate ($image, 36, 93, 219); imageFilledRectangle($image, 0, 0, $x, $y, $couleur); imagepng($image); //renvoie une image sous format png imagedestroy($image); //detruit l'image, liberant ainsi de la memoire ?>
Merci
Partager