Bonjour
Actuellement j'essaye d'envoyer un fichier sur mon serveur (sa j'y arrive) mais j'aimerais afficher une barre de progression.
En cherchant un peu j'ai trouvé quelque exemple je les ai testé mais j'ai des problemes.
Voici mon code html pour remplir le formulaire dans le fichier index.php:
<form enctype="multipart/form-data" action="index.php" method="post" onsubmit="submitForm();">
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="<?php echo uniqid()?>">
<input type="file" id="test_file" name="test_file"><br>
<!-- histoire de tester la raction lors d'un envoie multiple
<input type="file" id="test_file2" name="test_file2"><br>
-->
<input type="submit" value="Upload!">
<input type="button" onclick="annule();" value="Annule">
</form>
<div id="aff">bienvenue</div>
<div id="rep" style="width:400px; height:200px; margin:10px; padding:10px;">
<span id="enCours"></span> Ko sur <span id="total"></span> Ko
<p>Tableau des infos de progression au format json :</p>
<p id="tab"></p>
</div>
Ensuite dans le meme fichier j'ai ce morceau de javascript:
<script type="text/JavaScript">
function submitForm() {
setTimeout(envoie,30);//apres 30 seconde on arrete tout
}
function envoie()
{
var req = null;
var idProgress=document.getElementById("progress_key").value;
document.getElementById("aff").innerHTML="Started...";
if(window.XMLHttpRequest)
req = new XMLHttpRequest();
else if (window.ActiveXObject)
req = new ActiveXObject(Microsoft.XMLHTTP);
req.onreadystatechange = function()
{
document.getElementById("aff").innerHTML="Wait server...";
if(req.readyState == 4)
{
if(req.status == 200)
{
document.getElementById("aff").innerHTML="Received:" + req.responseText;
document.getElementById("enCours").innerHTML=req.current;
document.getElementById("total").innerHTML=req.total;
document.getElementById("tab").innerHTML=req;
}
else
{
document.getElementById("aff").innerHTML="Error: returned status code " + req.status + " " + req.statusText;
}
}
};
req.open("GET", "data.php?progress_key="+idProgress, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(null);
}
</script>
Dans le fichier data.php:
<?php
if (isset($_GET['progress_key'])) {
$rep=apc_fetch('upload_'.$_GET['progress_key']);
echo "bien joué $rep";
}
?>
Le probleme c'est qu'il ne me renvoie rien dans mon rep.responseText alors j'aimerais savoir où sa cloche dans ce code. Merci.