Le 06/10/2018 à 09:59, Maïeul a écrit :
Le 06/10/2018 à 09:43, Maïeul a écrit :
Le 05/10/2018 à 15:49, Camille Sauvage a écrit :
je sors d'une épique bataille pour permettre à nos usagers de téléverser des images via un formulaire Formidable.

Quand j'ai découvert que cvt-upload + Formidable = téléversement de fichiers dans un formulaire, je me suis jeté dessus car c'est un besoin discuté depuis longtemps.

Le hic, c'est que seul le téléversement de fichiers non graphiques fonctionnait chez moi. Les PDF, par exemple passaient parfaitement, alors que pour les GIF, JPEG et PNG, rien a faire, toujours les message

"Le fichier « XXXX » n’a pas pu être stocké correctement par le système. Contactez le webmestre."

En déroulant les appels des fonctions, j'ai vu qu'une fois la fonction _verifier() de cvt-upload passée, le fichier temporaire qui était créé entre le téléversement par PHP (dans le répertoire /tmp/) et celui dans le tmp/ du site (ou l'instance) SPIP avait disparu.

Donc quand Formidable essayait de recopier ce fichier à son emplacement de stockage définitif, le fichier manquait et générait cette erreur.

À force de chercher, je me suis rendu compte que le problème venait de l'invocation de la noisette :
cvt-upload/formulaires/inc-cvtupload-fichier.html
et plus précisément du filtre "_image_reduire_base64"

En effet, une fois que le filtre a fait sa conversion en base 64, le fichier original est supprimé car "Ceci permet que la vignette ne soit pas conservée dans local/ et donc évite que la vignette d'une image potentiellement confidentielle soit visible" (documentation de la fonction).

Sauf que là, ça ne fait pas notre affaire.

Du coup je propose ce petit patch en PJ. Si je suis le seul à avoir expérimenté ce problème et que certain.e.s parmi vous l'ont contourné depuis longtemps, je veux bien avoir l'explication de comment ça marchait avant pour vous.

Si vous voulez que je le commit, n'hésitez pas.


----
spip-zone@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-zone

merci pour ton rapport de bugue. Le patch lui-même n'est à mon avis pas le bon, car il faut simplement s'assurer que l'original soit différent du fichier réduit au sein de la fonction base_64, quelque soit le type de fichier. Le problème peut arriver dès lors que la fonction de compression d'image n'est pas executé, pour une raison y ou y.

Maïeul
----
spip-zone@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-zone
surtout il est important pour des raisons de confidentialités que la vignette généré dans local soit bien détruite...

je viens de faire un commit qui vérifie ce point. Bon par contre mes commits d'hier ont cassé la generation de vignette, mais on va voir comment résoudre cela.
----
spip-zone@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-zone
voilà, la toute dernière version de cvt-upload genere les vignettes mais n'efface pas les fichiers temporaires...
----
spip-zone@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-zone

Répondre à