OVH Cloud OVH Cloud

barre de progression en PHP (

12 réponses
Avatar
Tyler
Salut à tous !

je voudrais réaliser une barre de progression en temps réel qui indiue ou en
est la progression de l'upload d'un fichier:

l'idée était au moment de soummettre le formulaire, d'ouvrir une popup qui
récupère le nom du fichier temporaire et sa taille toutes les secondes...
mais ce n'est pas si simple que ce fichier temporaire est souvent
innaccessible.

je suis en train dd'essayer en FTP mais ca psse toujours par ce putain de
fichier temporair

certains on t il qqch là dessus ?

10 réponses

1 2
Avatar
Olivier Miakinen

Je voudrais réaliser une barre de progression en temps réel qui indique où en
est la progression de l'upload d'un fichier:

L'idée était au moment de soumettre le formulaire, d'ouvrir une popup qui
récupère le nom du fichier temporaire et sa taille toutes les secondes...


Je ne vois pas bien comment tu peux faire ça en PHP plutôt qu'en
Javascript par exemple.

mais ce n'est pas si simple [car] ce fichier temporaire est souvent
inaccessible.


J'ai déjà remarqué cette bizarrerie sur les systèmes Windows. Sur un
Unix, /a priori/, il n'y a pas de problème.

Avatar
Tyler
Je commence à me dérouiller en PHP et suis toujours aussi ignorant en
javascript. Je sais comment récupérer la taille d'un fichier sur le serveur
en php par exemple, pour moi ce langage permet par excellence la
communication avec le serveur, c'est un langage serveur interprété par le
serveur, alors que le Javascript est interprété par le navigateur du client
et ne peut intervenir que sur des données clientes. C ma notion de la chose
et c'est pourquoi je ne comprens pas pourquoi tu me dis "qu'il y a peut-être
moins de communication avec le serveur en php qu'en Javascript".

Je suis d'accord sur le fait que le PHP est interprété en premier (par
rapport au HTML ou JavaScript) et qu'ensuite il ne peut recommuniquer avec
le serveur sans un rechargement de la page. C'est pourquoi j'utilise une
première page avec un formualire de fichier qui à l'aide d'un peu de
javascript, ouvre une fenetre popup lors de la soumission. Ainsi pendnat que
la page principale charge le fichier, la popup se réactualise régulièrement
(encore javascript) et du code PHP va relever la taille du fichier sur le
serveur, taille qui devrait petit à petit augmenter... et voilà l'idée pour
faire une barre de progression. Le problème est que le fichier uploadé avec
un tel formulaire, est d'abord copié dans un fichier temporaire sur le
serveur, puis une fois cet upload terminée il est copié en qq secondes vers
l'endroit choisi sur mon espace sur le serveur. Ainsi c la taille du fichier
temporaire qu'il faudrait récupérer en temps réels. Pour cela je récupère le
nom de se fait chier mais je ne peu évaluer sa taille car il se situe sur un
endroit du serveur auquel je n'ai pas accès.

Pour éviter tout cela, j'ai envisager la méthode ftp. En utilisant les
fonctions ftp de php je pensais que le fichier serait copier directement
(sans fichier temporaire transitionnel) et pourrais ainsi en évaluer la
taille en temps réel... mais je n'arrive à faire fonctionner ces fonctions
qu'à l'aide d'un formualire de fichier. j'arrive alors à copier un fichier
d'un serveur à un autre mais pas un fichier local vers le server avec la
focntion FTP_PUT()...

Voilà ou j'en suis... merci de votre aide
Avatar
Moustique
"Tyler" a écrit:
Salut à tous !

je voudrais réaliser une barre de progression en temps réel qui indiue ou
en

est la progression de l'upload d'un fichier:

certains on t il qqch là dessus ?


Oui quelque chose existe:
http://www.laurent-laville.org/spip/article.php3?id_article!

C'est une classe PEAR qui permet de faire ça! En plus en français.

Pour ceux qu'il la veulent en anglais, c'est ici:
http://pear.php.net/package/HTML_Progress


Stéphane
La souplesse d'esprit permet de s'adapter dans toutes circonstances.

http://www.velo-passion.com vive le vélo

Avatar
Olivier Miakinen
[...] je ne comprens pas pourquoi tu me dis "qu'il y a peut-être
moins de communication avec le serveur en php qu'en Javascript".


Je voulais dire que pour interroger régulièrement le serveur afin de
connaître l'état d'avancement d'une tâche, je ne vois pas comment on
peut faire sans Javascript. Bien évidemment, la requête que fait le
script doit déclencher quelque chose côté serveur, et cela peut être un
programme en PHP, mais cela peut aussi bien être n'importe quel CGI.

En résumé, tu peux le faire avec { Javascript + PHP } ou bien avec
{ Javascript + CGI } (donc sans PHP), mais je ne pense pas que tu
puisses le faire avec PHP seul.

[ petit script Javascript qui interroge une page en PHP ]
[...] (encore javascript) et du code PHP va relever la taille du fichier
sur le serveur, taille qui devrait petit à petit augmenter...


En fait nous sommes d'accord. Désolé pour le quiproquo.

[ fichier temporaire ]
Pour cela je récupère le nom de se fait chier [...]


Lapsus révélateur comme on n'en voit pas souvent...

Pour éviter tout cela, j'ai envisager la méthode ftp. [...]


Pour le reste, je n'ai pas d'idée. J'espère que d'autres pourront
t'aider davantage.

Avatar
Tyler
mouaip !

J'avais déjà été jeter un coup d'oeil par là... mais je n'avais pas été
enthousiasmé, tout d'abord, le script est bien compliqué pour pas grand
chose, et surtout, j'ai l'impression que la barre pourrait tout aussi bien
être un gif animé car c simplement un mouvement qui tourne en boucle le
temps de l'upload... Je veux réaliser qq chose du type Flash, on a tous vu
le pré chargement d'anim avec un pourcentage voir même la quantité de ko se
charger en temps réel... Je reste persuadé qu'il est possible de faire
qqchose avec un peu de php et de javascript... les fonctions FTP de php sont
étranges:

pour uploader un fichier deux solutions :

- le formulaire HTML file qui uplaod le fichier temporairement qqpart sur le
serveur puis un coup de copy() ou autre en php et le tour est joué (déplace
et renomme le fichier). En réalité c'est donc la soumission du formulaire
qui upload le fichier, php ne se contente ensuite que de le déplacer d'un
endroit à un autre sur le serveur.

pour éviter cela et faire en sorte de copier directement le fichier de la
machine cliente vers le serveur, sans passer par un fichier temporaire, j'ai
pensé au ftp

- les commandes de ftp ne semblent pas fonctionner directement avec un
chemin source du genre "c:trucmachain.txt" ni même lorsqu'on les modifie
en "c:trucmachain.txt", en revanche en utilisant un formualire et en
récupérant le nom de fichier: $_FILES['Variable']['tmp_name'] ca fonctionne
très bien. Donc à nouveau j'ai bien l'impression que c'est le formulaire qui
a fait tout le boulot... et les commandes FTP de php permettent simplement
un déplacement du fichier sur le même serveur ou un autre. Ainsi je ne peux
toujours pas évaluer en temps réel la taille du fichier uploadé....

Pour moi, il y a qqch qui m'échappe dans la gestion FTP avec php:

comment uploader un fichier en utilisant les commandes FTP sans passer par
un champs file mais juste un champs texte dans lequel serait indiqué le
chemin du fichier sur le disque dur client.. ?

il semble bien qu'ici ils n'aient pas résolu le problème non plus :
http://www.asp-php.net/tutorial/asp-php/php-ftp.php?numsg‡751&resum=no#tch
Avatar
John Gallet
Bonjour,

pour uploader un fichier deux solutions :

- le formulaire HTML file qui uplaod le fichier temporairement qqpart sur le
serveur puis un coup de copy() ou autre en php et le tour est joué (déplace
et renomme le fichier). En réalité c'est donc la soumission du formulaire
qui upload le fichier, php ne se contente ensuite que de le déplacer d'un
endroit à un autre sur le serveur.


Oui sur le fond, même si la forme est un peu plus subtile que ça.

pour éviter cela
Pourquoi ? En quoi est-ce que ça ne correspond pas à ton besoin ?



machine cliente vers le serveur, sans passer par un fichier temporaire, j'ai
pensé au ftp


FTP = File Transfert Protocole = un client se connecte à un serveur,
donc = le PC se connecte DIRECTEMENT à la machine cible.

Pour moi, il y a qqch qui m'échappe dans la gestion FTP avec php:
comment uploader un fichier en utilisant les commandes FTP sans passer par
un champs file mais juste un champs texte dans lequel serait indiqué le
chemin du fichier sur le disque dur client.. ?


C'est rigoureusement impossible. Les fonctions FTP de php lui permettent
d'être CLIENT et NON PAS SERVEUR.

Ce qu'il est possible de faire, c'est d'uploader par formulaire un
fichier depuis le PC client vers une machine 1 avec PHP, puis que PHP se
connecte à ne amchine 2 (par exemple parce qu'elle est derrière un
firewall hors DMZ) pour lui transmettre le fichier qu'il vient de
recevoir.
Mais JAMAIS tu ne transfèreras un fichier depuis un PC lambda vers un
serveur avec les fonctions FTP de PHP exécutées sur ce serveur. Ca ne
sert pas à ça.

a++
JG

Avatar
Paul Delannoy
Tyler a écrit:

[...ZAPPE...]



Pour moi, il y a qqch qui m'échappe dans la gestion FTP avec php:

comment uploader un fichier en utilisant les commandes FTP sans passer par
un champs file mais juste un champs texte dans lequel serait indiqué le
chemin du fichier sur le disque dur client.. ?

il semble bien qu'ici ils n'aient pas résolu le problème non plus :
http://www.asp-php.net/tutorial/asp-php/php-ftp.php?numsg‡751&resum=no#tch


FTP c'est comme bcp de choses sur le net : un protocole
client/serveur... c'est donc le client qui doit décider des commandes à
faire exacuter par le serveur, qui y répond : dans ton cas, ce ne sera
donc pas PHP qui enverra les commandes, mais bel et bien le
navigateur... Il faut donc que tu t'orientes vers qq chose qui 'tourne'
sous le contrôle du CLIENT auquel tu vas donner le chemin local du
fichier et qui l'enverra au serveur : c'est ce que fait le champ 'de
type 'file' lorsque le formulaire est validé.

Avatar
Tyler
Voilà ce que je veux faire
- j'ai un fichier sur ma machine que je veux uploader sur l'espace que je
loue à mon hébergeur
- je veux pouvoir suivre en temps réel la progression de l'upload de mon
fichier: (ex: 128ko/876ko puis 435/876ko) savoir à chaque instant combien de
ko j'ai uploadé...
- pour cela je ne peux pas compter sur un simple champs fichier car pour
relever régulièrement la taille du fichier en train d'être uploadé il me
faudrait avoir accès au fichier temporaire sur lequel je n'ai pas de droit
d'accès chez mon hébergeur.
- le problème du champs file est qu'il immobilise la page le temps de
l'upload, sous IE on percoit simplement une petite barre de progression dans
la barre d'état...

comme un exemple vaut mieux qu'une multitude d'explication, j'ai trouv
éexactement ce que je voulais faire sur le site de
Wistiti...(http://www.wistiti.fr il propose plusieurs méthodes pour
télécharger les photos, ce qui m'intéresse pour le moment c'est simplement
une à une c'est à dire ce qu'il appelle la méthode classique. Pour ceux que
ce sujet intéresse, inscrivez vous sur wistiti ca ne prend que qq secondes
(pas de confirmations... etc.) et uploadez une photo au hasard. Vous allez
voir une petit popup s'ouvrir, elle s'autoactualise chaque seconde et
indique ainsi le pourcentage et les ko d'uploadés... c exactement ce que je
veux faire. Je sais tout faire sauf récupéré le nombre d'octets uploadé...
Avatar
John Gallet
Re,

- je veux pouvoir suivre en temps réel la progression de l'upload de mon
fichier: (ex: 128ko/876ko puis 435/876ko) savoir à chaque instant combien de
ko j'ai uploadé...


L'intérêt en est plus que douteux, ce qu'il faut surtout savoir c'est si
le transfert a planté ou pas, à l'octet près clairemnt on s'en tape,
mais bon.

- pour cela je ne peux pas compter sur un simple champs fichier car pour
relever régulièrement la taille du fichier en train d'être uploadé il me
faudrait avoir accès au fichier temporaire sur lequel je n'ai pas de droit
d'accès chez mon hébergeur.


Rien à voir avec la choucroute. De toutes façons, il faudrait que tu
polles régulièrement ladite taille côté serveur et que tu renvoies la
valeur par flush, ce qui ne fonctionnera pas nécessairement (par exemlpe
s'il y a un mod_gzip).

- le problème du champs file est qu'il immobilise la page le temps de
l'upload, sous IE on percoit simplement une petite barre de progression dans
la barre d'état...


La seule solution simple pour ce que tu veux faire est nécessairement
côté CLIENT (donc navigateur), donc en JS ou en applet java. Il y a
NECESSAIREMENT quelqu'un qui a déjà écrit ce genre de choses, donc
cherche sur google ou autres; en tous cas, ce n'est pas en PHP que se
trouve la solution (pas la plus simple).

a++
JG

Avatar
SvS
http://mire.ipadsl.net

--
________________________________________
Avec Internet, où allons-nous? Ed. Le Pommier
http://www.soudoplatoff.com/li2004/
________________________________________

"Tyler" a écrit dans le message de news:
41a8a867$0$28272$
Salut à tous !

je voudrais réaliser une barre de progression en temps réel qui indiue ou
en est la progression de l'upload d'un fichier:

l'idée était au moment de soummettre le formulaire, d'ouvrir une popup qui
récupère le nom du fichier temporaire et sa taille toutes les secondes...
mais ce n'est pas si simple que ce fichier temporaire est souvent
innaccessible.

je suis en train dd'essayer en FTP mais ca psse toujours par ce putain de
fichier temporair

certains on t il qqch là dessus ?


1 2