1 Home
Matthieu Marcillaud edited this page 2 years ago

Plugin Bigup

Bigup est un plugin SPIP permettant de téléverser de gros fichiers dans les formulaires CVT de SPIP.

Fonctionnement général

Un formulaire va pouvoir recevoir et stoker les fichiers envoyés par un champ input de type file, le temps de la rédaction de ce formulaire, et jusqu'au traitement de celui-ci.

Ainsi, si la vérification du formulaire retourne des erreurs de saisie dans la fonction verifier(), le formulaire est ré-affiché en montrant les erreurs donc, mais les fichiers déjà téléversés n'ont pas à être de nouveau sélectionnés dans l'input correspondant et téléversés. Ils sont conservés quelques temps sur le serveur tant que le formulaire n'a pas terminé son traitement.

Il est possible, dans le code html du formulaire de lister les fichiers déjà téléversés, pour chaque champ de type file concerné (et de pouvoir demander leur suppression). La saisie bigup le propose par défaut.

Amélioration javascript

Par dessus tout cela s'ajoute une couche javascript qui permet de téléverser des fichiers, même volumineux, dès qu'ils sont ajoutés à l'input.

Dès qu'un fichier est déposé sur la zone prévue, le téléversement commence. Sauf si le fichier ne correspond pas au type de fichier attendu, défini sur l'input dans son attribut html5 accept.

Le fichier est envoyé par morceaux (chunk), jusqu'à ce que le dernier morceau soit envoyé. Cela permet de dépasser la limite de taille d'upload attribuée par PHP (2Mo par défaut), en envoyant des morceaux de taille inférieure. Effectivement, un fichier qui dépasse cette taille maximum ne peut être téléversé directement en une fois avec le formulaire traditionnel. La taille maximum autorisée à l'upload (par javascript) est à définir dans la configuration du plugin.

Si une interruption arrive lors d'un téléversement d'un fichier (on quitte la page, puis on revient dessus par exemple), et que l'utilisateur remet le même fichier à téléverser, les morceaux déjà reçus ne seront pas réenvoyés, ce qui économise un peu de temps et de bande passante.

Sommaire