Drupal : PECL Upload Progress bar
Afficher une barre de progression lors de l'upload d'un fichier sur votre site Drupal est très convivial. L'installation de ce module PECL uploadprogress est...
Afficher une barre de progression lors de l'upload d'un fichier sur votre site Drupal est très convivial. L'installation de ce module PECL uploadprogress est...
Comme à son habitude, Microsoft vous propose depuis quelques jours d'essayer en version bêta la prochaine mise à jour du dashboard de sa Xbox 360. Cette...
Voilà une bonne nouvelle qui devrait nous ravir internaute français. Combien de fois êtes-vous tomber sur une vidéo youtube qui venait d’être retirée ou...
Après Google New, il semblerait que Google souhaite mettre de l’ordre dans ses équipements pour que le client final puisse facilement comprendre ce que...
Souvenez-vous, en début d'année, nous vous annoncions la fermeture du portail AOL France car la firme n'a pas survécu à la crise internet. Il a naturellement...
La communauté des développeurs volontaires OpenOffice a annoncé hier sa rupture avec Oracle. Le projet de suite bureautique Open Source tel qu'il existait...
En présentant sa nouvelle console 3DS au salon E3 de Los Angeles, Nintendo s’était montré assez avare en détails. D'ailleurs, les dernières actualités, avec...
D’après des sources proches du dossier, il semblerait que Skype et Facebook travaille sur un partenariat permettant au célèbre logiciel de VOIP...
S’il y a bien une utilisation de Twitter qu’en font ces membres, c’est de l’utiliser comme support de discussion que ce soit pour...
Alors que l’on attendait la sortie du site Hadopi.fr lundi dernier, celui-ci nous a fait faux bon. La cause ? Le gouvernement n’est pas serein...
Afficher une barre de progression lors de l'upload d'un fichier sur votre site Drupal est très convivial. L'installation de ce module PECL uploadprogress est relativement facile,...
Vous avez un serveur Web en Drupal, et ce message apparaît dans votre tableau de bord :
C’est juste un avertissement : votre serveur est capable d’afficher une barre de progression lors du téléchargement de fichier (upload), mais cela n’est pas activé. Pour cela, il faut ajouter un module PECL « uploadprogress ».
Comment obtenir cette superbe barre de progression sur votre site ?
Bien que j’ai rencontré ce message dans des installations Drupal, ce module n’est absolument pas lié à Drupal !
Bien d’autres CMS ou programmes que Drupal devraient pouvoir profiter de ce module PECL « uploadprogress » ;-)
Voyons comment activer cette fonctionnalité intéressante ;-)
Les instructions, bien que prévues pour un serveur Debian ou Ubuntu, sont très facilement adaptables sous toutes distributions Linux ou même probablement BSD. Les principales différences sont votre gestionnaire de paquets et le fait d’utiliser « sudo » ou pas.
Pour le moment, je n’ai pas cette extension sur mon serveur Drupal.
Voici ce que cela donne lors de l’upload d’un fichier.
Le champ « image », que j’upload, est créé avec CCK, Filefield et Imagefield, mais ce n’est pas le but de ce billet.
Aucun moyen pour l’utilisateur de savoir s’il est à 95 %, 50 % ou 3 % de son upload…
Installons ce module PECL « uploadprogress »
PECL, « PHP Extension Community Library », est un dépôt regroupant des programmes et extensions PHP.
Une de ces extensions est le module « uploadprogress » qui ajoute à PHP la possibilité d’afficher une barre de progression lorsque vous uploadez (de votre PC vers le serveur) un fichier.
La gestion et la distribution de paquet PECL est gérée par … PEAR, « PHP Extension and Application Repository ».
Cela semble complexe, mais point n’est besoin de connaitre et comprendre PEAR et PECL en détail ;-)
En résumé :
Pour la barre de progression, il faut le module PECL « uploadprogress », et pour l’installer il faut PECL, et donc PEAR sur votre serveur Web / PHP.
logo PEAR © The PHP Group
Si vous n’avez pas encore PEAR, commencez par l’installer.
Un module PHP contenu PEAR est certainement prévu dans votre distribution.
Je l’installe ici sous Ubuntu 8.04. Cela devrait être pratiquement identique pour les autres distributions :
$ sudo aptitude install php-pear
Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Lecture de l'information d'état étendu Initialisation de l'état des paquets... Fait Construction de la base de données des étiquettes... Fait Les NOUVEAUX paquets suivants vont être automatiquement installés : php5-cli Les NOUVEAUX paquets suivants vont être installés : php-pear php5-cli
0 paquets mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de télécharger 2836ko d'archives. Après dépaquetage, 8102ko seront utilisés. Voulez-vous continuer ? [Y/n/?] Y Écriture de l'information d'état étendu... Fait
Prendre :1 http ://be.archive.ubuntu.com hardy-updates/main php5-cli 5.2.4-2ubuntu5.12 [2481kB] Prendre :2 http ://be.archive.ubuntu.com hardy-updates/main php-pear 5.2.4-2ubuntu5.12 [355kB] 2836ko téléchargés en 2s (1020ko/s) Sélection du paquet php5-cli précédemment désélectionné. ... Paramétrage de php5-cli (5.2.4-2ubuntu5.12) ... Creating config file /etc/php5/cli/php.ini with new version
Paramétrage de php-pear (5.2.4-2ubuntu5.12) ... Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Lecture de l'information d'état étendu Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait Construction de la base de données des étiquettes... Fait
Maintenant que PEAR est installé, PECL l’est aussi.
logo PECL © The PHP Group
Il suffit d’installer le module « uploadprogress ».
$ sudo pecl install uploadprogress
downloading uploadprogress-1.0.1.tgz ...
Starting to download uploadprogress-1.0.1.tgz (8,536 bytes)
.....done : 8,536 bytes
4 source files, building
running : phpize
sh : phpize : not found
ERROR : `phpize' failed
La commande est simple, mais se termine mal :-(
Après une petite recherche, « phpize » se trouve dans le package « php5-dev », que j’installe :
$ sudo aptitude install php5-dev
Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Lecture de l'information d'état étendu Initialisation de l'état des paquets... Fait
Construction de la base de données des étiquettes... Fait
Les NOUVEAUX paquets suivants vont être automatiquement installés :
autoconf automake automake1.4 autotools-dev gcc gcc-4.2 libc6-dev libgomp1
libltdl3-dev libssl-dev libtool linux-libc-dev m4 shtool zlib1g-dev
Les NOUVEAUX paquets suivants vont être installés : autoconf automake automake1.4 autotools-dev gcc gcc-4.2 libc6-dev libgomp1 libltdl3-dev libssl-dev libtool linux-libc-dev m4 php5-dev shtool zlib1g-dev 0 paquets mis à jour, 16 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de télécharger 9522ko d'archives. Après dépaquetage, 35,9Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] Y ...
PHP5-dev nécessite en effet les outils de développement Linux, et installe donc automatiquement plusieurs autres packages.
Je relance l’installation de « uploadprogress » :
$ sudo pecl install uploadprogress
downloading uploadprogress-1.0.1.tgz ...
Starting to download uploadprogress-1.0.1.tgz (8,536 bytes)
.....done : 8,536 bytes
4 source files, building
running : phpize
Configuring for :
PHP Api Version : 20041225
Zend Module Api No : 20060613
Zend Extension Api No : 220060519
building in /var/tmp/pear-build-root/uploadprogress-1.0.1
running : /tmp/pear/cache/uploadprogress-1.0.1/configure
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E ...
checking whether to build static libraries... no configure : creating libtool appending configuration tag "CXX" to libtool appending configuration tag "F77" to libtool
configure : creating ./config.status config.status : creating config.h
running : make
sh : make : not found
ERROR : `make' failed
Cette fois, il manque l’utilitaire « make », qui est effectivement nécessaire, car l’installation va compiler le module « uploadprogress ».
Le make pour PHP se trouve dans le paquet « build-essential » :
$ sudo aptitude install build-essential
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu
Initialisation de l'état des paquets... Fait
Construction de la base de données des étiquettes... Fait
Les NOUVEAUX paquets suivants vont être automatiquement installés :
dpkg-dev g++ g++-4.2 libstdc++6-4.2-dev libtimedate-perl make patch
Les NOUVEAUX paquets suivants vont être installés :
build-essential dpkg-dev g++ g++-4.2 libstdc++6-4.2-dev
libtimedate-perl make patch
0 paquets mis à jour, 8 nouvellement installés,
0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 4816ko d'archives.
Après dépaquetage, 18,4Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] Y
Maintenant, je réessaye le « uploadprogress » :
$ sudo pecl install uploadprogress
downloading uploadprogress-1.0.1.tgz ... Starting to download uploadprogress-1.0.1.tgz (8,536 bytes) .....done : 8,536 bytes 4 source files, building running : phpize ...
configure : creating ./config.status config.status : creating config.h running : make /bin/bash /var/tmp/pear-build-root/uploadprogress-1.0.1/libtool --mode=compile gcc ... ... Build process completed successfully Installing '/usr/lib/php5/20060613+lfs/uploadprogress.so' install ok : channel ://pecl.php.net/uploadprogress-1.0.1 configuration option "php_ini" is not set to php.ini location You should add "extension=uploadprogress.so" to php.ini
Voilà, la compilation du module « uploadprogress » est terminée.
Il reste a charger ce module dans PHP.
J’ajoute à la fin du fichier php.ini :
$ sudo vi /etc/php5/apache2/php.ini
extension=uploadprogress.so
Comme la configuration PHP est chargée au démarrage d’Apache2, il faut redémarrer Apache2.
$ /etc/init.d/apache2 restart
Restarting web server : apache2 ... waiting .
En résumé, dans l’ordre, il faut les modules et actions suivantes :
Les commandes sont donc :
Vérification dans le tableau de bord de mon site Drupal :
Je réessaye un upload de fichier :
Evidemment, que cette fonctionnalité soit prise en compte ou pas dépend du module ou programme utilisé.
Dans le cas de Drupal, FileField et ImageField affichent cette barre de progression si le serveur est configuré correctement ;-)
Sources :
Abonnez-vous pour recevoir notre sélection des meilleurs articles directement dans votre boîte mail.
Nous ne partagerons pas votre adresse e-mail.