[PHP] Upload et barre de progression

Upload et barre de progression [PHP] - PHP - Programmation

Marsh Posté le 23-03-2004 à 14:37:07    

Bonjour,
 
Je fais un site en php. Jusque la tout va bien. Dans ce site je permet au gens d'uploader leurs videos via une page ou la personne choisi la video à envoyer et qq infos supplementaire qui seront stockés en BDD.  
 
Mon probleme apparait quand la personne upload le fichier car son browser se bloque pdt le temps ou la video est envoyé. Dc je cherche une solution de type barre de progression (mais j'y crois pas trop).
Sinon peut on imaginer de faire confirmer l'envoi du script par une popup et lorsque l'utilisateur valide, seul la popup reste bloquée?
Je sais c'est pas tres elegant.
 
Si qq'un a une meilleur idées elle est la bienvenue.
 
Je cherche egalement du coté de la librairie PEAR HTML_Progress mais pour l'instant sans resultat.
 
Merci

Reply

Marsh Posté le 23-03-2004 à 14:37:07   

Reply

Marsh Posté le 23-03-2004 à 14:48:39    

c pas en PHP que tu fera ca !  
php = execution serveur !
 
par contre t au courant des limites de teilles de fichier pour envoyer des Video ?  
regarde aussi du cote des timeOut en html car ca va jouer aussi !

Reply

Marsh Posté le 23-03-2004 à 14:52:18    

Ok c'est executé coté serveur. Oui au niveau serveur tout est a été parametrer au niveau du script. Les fichiers passent bien. C'est juste que la fenetre est bloquée pendant le temps du transfert dde fichier donc c'est pas top.

Reply

Marsh Posté le 23-03-2004 à 15:28:44    

le navigateur n'est pas "bloqué", il envoie le fichier... [:spamafote]
 
Y'a pas de solution élégante à ton problème. Mais pour faire ça aux problème de timeout, pas le choix de mettre en place un serveur FTP avec des droits
 
parce qu'un vidéo de 50Mo en moins de 30 sec c'est pas facile


Message édité par jagstang le 23-03-2004 à 15:28:56
Reply

Marsh Posté le 23-03-2004 à 15:55:21    

1- Ne pas confondre 30 seconde de temps machine et 30 de temps de transfert.
2- Barre de progression possible avec applet java ou page flash voir activex...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 23-03-2004 à 15:58:10    

Exemple : http://www.radinks.com/upload/
2ème lien sur http://www.google.com/search?hl=en [...] et&spell=1


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 23-03-2004 à 16:16:13    

JagStang a écrit :

le navigateur n'est pas "bloqué", il envoie le fichier... [:spamafote]
 
Y'a pas de solution élégante à ton problème. Mais pour faire ça aux problème de timeout, pas le choix de mettre en place un serveur FTP avec des droits
 
parce qu'un vidéo de 50Mo en moins de 30 sec c'est pas facile


 
D'accord avec toi le navigateur n'est pas bloqué mais pour l'utilisateur lambda le navigateur "semble" bloqué.
Sinon pour les 30 sec, tu peux le modifier dans le php.ini et dans le script via set_time_limit dc c'est pas un probleme. De plus, je suis sur un reseau 100Mb donc les videos sont tout meme vite transferé (A part quand tu envoi un avi de 300Mo).
 
En tout cas merci pour votre aide

Reply

Marsh Posté le 23-03-2004 à 16:33:59    

bah c'est super simple, tu mets une barre de progression apres validation du formulaire, elle restera jusqu'a ce que la page change...
 

Code :
  1. /******************************************************************************
  2.     Composant de barre d'attente - jsWait
  3.     Vincent Fiack - 18/03/2003
  4. *******************************************************************************/
  5. document.writeln("<div id=\"jsWaitMessage\" style=\"font-family: Verdana; font-size: 10px; text-align: center; padding: 3px; position: absolute; left: 30%; top: 40%; height: 20px; width: 300px; z-index:3\"></div>" );
  6. document.writeln("<div id=\"jsWaitArea\" style=\"display: none; position: absolute; left: 30%; top: 40%; height: 20px; width: 300px; border: 1px black solid; background: #FFFFAA;z-index:2\">" );
  7. document.writeln("<div id=\"jsWaitBlock\" style=\"position: relative; left: 0px; height: 20px; width: 50px; background: blue;z-index:2\"></div>" );
  8. document.writeln("</div>" );
  9. jsWait_defaultInstance = null;
  10. function showWait(message)
  11. {
  12.   jsWait_defaultInstance = new jsWait('jsWait_defaultInstance', message);
  13.   jsWait_defaultInstance.show();
  14. }
  15. // -------------------------------------------
  16. //        Définition du type jsWait
  17. // -------------------------------------------
  18. /**
  19. * Constructeur
  20. * @param name le nom du composant
  21. * @param message le message a afficher
  22. */
  23. function jsWait(name, message)
  24. {
  25.   this.name = name;
  26.   this.message = message;
  27.   this.speed = 10;
  28.   this.direction = 2;
  29.   this.waiting = false;
  30.   this.divMessage = document.getElementById("jsWaitMessage" );
  31.   this.divArea = document.getElementById("jsWaitArea" );
  32.   this.divBlock = document.getElementById("jsWaitBlock" );
  33. }
  34. // -------------------------------------------
  35. //        Méthodes publiques
  36. // -------------------------------------------
  37. jsWait.prototype.show = function()
  38. {
  39.   this.divMessage.innerHTML = this.message;
  40.   this.divMessage.style.display = "block";
  41.   this.divArea.style.display = "block";
  42.   this.divBlock.style.display = "block";
  43.   this.divBlock.style.left = "0px";
  44.   this.waiting = true;
  45.  
  46.   this.loop();
  47. }
  48. jsWait.prototype.setMessage = function(message)
  49. {
  50.   this.message = message;
  51.   this.divMessage.innerHTML = this.message;
  52. }
  53. jsWait.prototype.stop = function()
  54. {
  55.   this.waiting = false;
  56.   this.divMessage.style.display = "none";
  57.   this.divArea.style.display = "none";
  58.   this.divBlock.style.display = "none";
  59. }
  60. // -------------------------------------------
  61. //        Méthodes privées
  62. // -------------------------------------------
  63. jsWait.prototype.loop = function()
  64. {
  65.   myLeft = this.divBlock.style.left;
  66.   myLeft = myLeft.substring(0, myLeft.length-2);
  67.   intLeft = parseInt(myLeft);
  68.   if(intLeft >= 250)
  69.     this.direction = -2;
  70.   if(intLeft <= 0)
  71.     this.direction = 2;
  72.   myLeft = "" + (intLeft+this.direction) + "px";
  73.   this.divBlock.style.left = myLeft;
  74.   if(this.waiting)
  75.     setTimeout(this.name + ".loop()", this.speed);
  76. }


 
inclus ce js dans ta page et appelle showWait('upload en cours') a la validation du formulaire...

Reply

Marsh Posté le 23-03-2004 à 16:49:56    

C'est pas une barre de progression ça, c'est une barre d'activité...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 23-03-2004 à 16:50:47    

Mara's dad a écrit :

C'est pas une barre de progression ça, c'est une barre d'activité...


 
oui mais le client le sait pas, c'est une feinte pour qu'il attende  :o


---------------
IVG en france
Reply

Marsh Posté le 23-03-2004 à 16:50:47   

Reply

Marsh Posté le 23-03-2004 à 19:01:12    

Merci bcps. J'ai fait une barre d'activité et c'est nikel. Merci a tous

Reply

Marsh Posté le 23-03-2004 à 19:39:06    

en meme temps, suffit de regarder dans le coin du browser pour avoir une barre de progression [:spamafote]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed