Voila je veut mettre en place ce qui est ecrit ici : [electron-libre.fassnet.net] upload.php J'ai donc activé l'extension php_apc.dll et rajouté l'option rfc1867 dans le php.ini. Par contre lorsque j'affiche le phpinfos, cette variable n'apparait pas. On peut lire dans la doc :
apc.rfc1867
RFC1867 File Upload Progress hook handler is only available if you compiled APC against PHP 5.2.0 or later. When enabled any file uploads which includes a field called APC_UPLOAD_PROGRESS before the file field in an upload form will cause APC to automatically create an upload_<key> user cache entry where <key> is the value of the APC_UPLOAD_PROGRESS form entry. (Default: 0)
Comme le script n'arrive pas à trouver de variables upload_ je pense que mon problème vient de la.
J'ai effectivement trouvé une solution. En fait la dll fournis avec Wamp n'est pas assez récente. Il faut aller récupérer la dernière version compilé pour Windows et ca marche nickel.
Oui je parle bien de php_apc.dll. Elle est fourni par défaut dans la dernière version de WAMP mais avec la version fourni, l'option rfc1867 n'apparaissait pas dans le phpinfo. Avec la dernière version sur le site officiel l'option apparait bien et je peut uploader mes fichier.
OK ca marche par contre je sais vois pas comment récupérer le fichier après. en fait je pense que je dois utiliser les commandes du type "move_uploaded_file" mais je ne sais pas ou mettre ces lignes de code.
function getXhr(){ var xhr = null; if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP" } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP" } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." xhr = false; } return xhr }
/* Temporise avant l'envoie de la requête pour éviter un bug */ function attendEnvoie() { setTimeout(testProgress,50); }
/* Construit la requête xmlHttpRequest */ function testProgress() { var idProgress=document.getElementById("progress_key".value;
var xhr = getXhr();
xhr.onload=tcb; ////la fonction de rappel qui gère la réponse du serveur
//la requête est envoyé en mode asynchrone(paramètre true) pour éviter de geler le navigateur xhr.open("GET","progress.xhr.php?progress_key="+idProgress,true); xhr.send(null); }
/* Permet d'annuler l'envoie des infos par le navigateur via la méthode stop() de l'objet window Peut provoquer le plantage du navigateur(ff2), à affiner ^^ */ function annule() { //récupération de l'objet window de l'iframe var winIfrm=document.getElementById("tfrm".contentWindow; winIfrm.stop(); }
/* La fonction de rappel de l'objet xmlHttpRequest */ function tcb() { var repXhr=this.responseText; //récupération de la réponse du serveur via l'objet xmlHttpRequest (this) /* La réponse envoyé par le serveur étant au format texte il faut utiliser eval() pour la manipuler La réponse au format json ne peut être exploité directement par eval, il faut l'entourer de parenthèses via une concaténation pour éviter un bug */ var objRep=eval("("+repXhr+""
//tant que l'upload est en cours le serveur est réinterrogé if (objRep.done==0) { testProgress(); }else{ document.getElementById("rate".innerHTML=Math.round((objRep.rate*100)/1024)/100; document.getElementById("rate".innerHTML+=" Ko/s"; document.getElementById("END".innerHTML="END"; } }
if (isset($_GET['progress_key'])) { $rep=apc_fetch('upload_'.$_GET['progress_key']); echo json_encode($rep); exit; } ?>
Voila mon code pour l'instant, avant de faire de la mise en forme je cherche à réussir à récupérer mon fichier (normal pour de l'upload lol ) mais je ne vois pas à quel endroit mettre la copie du fichier temp vers le fichier final.