Upload de gros fichiers par fragments (chunk)
Bonjour,
Je vous propose un nouvel élément à utiliser : Upload de gros fichiers par fragments (chunk), reprise d'upload, affichage des informations en temps réel et styles événementiels.
Upload les fichiers par fragments compilés dans un fichier temporaire quand ils dépassent une valeur paramétrable. L'upload terminé, le fichier temporaire est renommé avec son nom initial (éventuellement corrigé) et déplacé vers son emplacement définitif.
- Permet de surpasser les limitations serveur "upload_max_filesize" et "post_max_size".
- Permet la reprise d'un téléchargement interrompu après une panne internet ou serveur, en utilisant la partie sauvegardée.
- Supporte l'upload multiple et surpasse la configuration serveur "max_file_uploads" avec un système de file d'attente (queuing).
- Retour d'informations en temps réel, personnalisable et très souple.
a/ Huit informations*sont disponibles durant l'upload : nom, taille, progression graphique, progression textuelle, sauvegarde partielle effectuée, temps passé, temps restant estimé, status (en cours, ok, partiel, erreur).
b/ Dispose de style événementiels qui s'appliquent en fonction des événements suivant*: formulaire envoyé, fichiers soumis, fichier en cours d'upload, sauvegarde partielle disponible, upload terminé, upload terminé ok, upload terminé partiel, upload terminé erreur.
Dossier de test prêt à l'emploi. Le fichier d'exemple se nomme "UploadAjaxABCI.php". Ouvrez-le (sans modifier l'organisation du dossier) et ça devrait fonctionner !
N'oubliez pas de consulter le mode d'emploi avant de poser des questions...
ATTENTION*! Pour faire des tests sur un serveur local il est conseillé d'utiliser le paramètre ".config.ajax_delai" avec une valeur assez importante pour espacer l'envoi des requêtes (ce qui est déjà fait dans le fichier d'exemple). Je ne pourrai pas être tenu pour responsable si une sollicitation importante du système donne le coup de grâce d'un disque dur en cours d'agonie.
L'encre est à peine sèche, je vous propose cette classe juste avant de prendre des vacances... j'espère que vous ne trouverez pas trop d'erreurs :)
Classe d'upload Ajax + php version 2.0
Bonjour,
La version 2.0 est en ligne ici ! :)
1/ Nouvelles fonctionnalités :
-Affichage possible des vignettes de prévisualisation (si les fichiers sont des images) avant l'upload.
Pour contenir cette information la classe css "UpAbci_apercu_img" a été créée, ainsi que 4 paramètres de configuration javascript :
Citation:
- .config.max_weight_apercu = ...; // en Mo. Poids maximal de chaque image pour prévisualisation. Si cette valeur est dépassée pour au moins une image dans un upload multiple, aucune vignette ne sera affichée afin de préserver une cohérence dans l'affichage des informations
- .config.total_max_weight_apercu = ...; // en Mo. Poids total maximal de toutes les images (en téléchargement multiple) pour prévisualisation. Si dépassé aucune vignette ne sera affichée
- .config.max_width_apercu = ...; // en pixels. Largeur maximale de l'aperçu
- .config.max_height_apercu = ...; // en pixels. Hauteur maximale de l'aperçu
- Gestion de l'affichage du temps restant
Nouveau style événementiel "data-upabcicss-temps-restant-requis" qui sera appliqué si le temps restant estimé pour l'upload du fichier est supérieur à la valeur du nouveau paramètre de configuration javascript ".config.temps_restant_requis".
L'idée est de pouvoir supprimer l'affichage du temps restant pour les petits fichiers tout en le rendant disponible pour les gros sans avoir besoin de modifier la configuration du script ;)
- Tâche cron de nettoyage
Un nouveau fichier php nommé "nettoyage_temp.php" donne un exemple de script pour nettoyer le dossier temporaire. Ce script devrait être appelé régulièrement pour nettoyer les fichiers abandonnés dans le dossier temporaire.
2/ Corrige le dernier petit bug mentionné dans ce message.
Tous les fichiers dont le mode d'emploi et le fichier d'exemples ont été mis à jour :D
Classe d'upload Ajax + php version 2.2
Bonjour,
La version 2.2 est en ligne ici !
3 options de configuration et 2 options d'information ont été ajoutées dans la classe javascript
- config.requete_upload_fin = false; // booléen true ou false. Si = true, une requête additionnelle est envoyée au script php pour indiquer la fin de traitement de tous les fichiers (excepté si config.requete_sans_fichier = false et qu'aucun fichier n'a été soumis). Utile uniquement côté serveur si besoin.
- config.max_filesize_utilisateur = null;// taille maximale du fichier utilisateur. Si = 0 ou null aucune vérification n'est faite sur la taille du fichier. Accepte un nombre en octets ou une chaine de caractère formatée avec les unités. Les espaces et la lettre "o" sont optionnels et le formatage ne tient pas compte de la casse. Par exemple 1073741824 = '1073741824o' = '1024Mo' = '1024 M' = '1048576k' = '1048576 Ko' = '1 go' = '1 G'. Les nombres décimaux sont acceptés.
- config.extensions_autorisees = [];// Tabelau des extensions autorisées. Les variantes majuscules/minuscules sont automatiquement prises en compte. Si le tableau est vide aucune vérification n'est faite.
- info.status.erreur_taille = 'Dépassement de la taille maximale autorisée. ';// message si dépassement de "config.max_filesize_utilisateur".
- info.status.erreur_extension = 'Extension non valide. ';// message si l'extension ne fait pas partie du tableau "config.extensions_autorisees".
Note importante : Les fonctions de contrôle de taille et d'extension des fichiers ont été créées pour faciliter l'expérience utilisateur. Celui-ci n'a plus à attendre la fin de l'upload d'un fragment de fichier pour avoir le message d'avertissement correspondant qui est maintenant instantané. Cependant comme on ne doit pas faire confiance aux contrôles javascript ces mêmes contrôles devraient être refaits par sécurité côté serveur (pas obligatoire pour le fonctionnement du code mais vivement conseillé).
3 fonctions ont été ajoutées dans la classe php
- getUploadFin() // qui permet d'exploiter la configuration ajax "config.requete_upload_fin".
- getFichierNomOriginel() // qui permet de retourner le nom originel du fichier.
- Return_Octets() // qui facilite la conversion d'une chaine formatée (ex : '1000 Mo', '1 Go', '1.2 G') en octets.
Tous les fichiers dont le mode d'emploi et le fichier d'exemples ont été mis à jour :D
P.S La version 2.2 est la version qui succède à la version 2.0. La version 2.1 est une version interne intermédiaire qui n'a pas été mise en ligne.