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):

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 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);
}
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
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."\"/>";
 
 
?>
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
<?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
?>
Voila
Merci