[SPIP Zone] Formulaires & tables: archive zip corrompu sur serveur en ligne

bonjour,

j'ai un soucis sur F&T 191 SVN sur l'export en zip

les archives zip d'export sont corrompues sur le serveur en ligne (un réparer avec utilitaire permet de les exploiter quand même)
alors que sur le serveur local, les archives exportées sont valides

le bug doit donc venir de la configuration serveur
vous voyez vous un moyen de résoudre ce bug ?

lu dans exec/forms_telecharger.php ligne 100
    $action = parametre_url($action,'var_mode','download'); // hack pour desactiver la compression gzip par buffer qui corromp le zip

--
_________________________________________
http://www.erational.org

sur actions/forms_telecharger.php avant les directives Header("Content-Length: ".....

il faut ajouter l'instruction
Header("Content-Transfer-Encoding: binary");

cela permet desactiver la compression gzip
qui corrompt le téléchargement des zips et les fichiers (cas du téléchargement depuis le lien email d'une réponse)

dois je commiter ?

erational wrote:

bonjour,

j'ai un soucis sur F&T 191 SVN sur l'export en zip

les archives zip d'export sont corrompues sur le serveur en ligne (un réparer avec utilitaire permet de les exploiter quand même)
alors que sur le serveur local, les archives exportées sont valides

le bug doit donc venir de la configuration serveur
vous voyez vous un moyen de résoudre ce bug ?

lu dans exec/forms_telecharger.php ligne 100
   $action = parametre_url($action,'var_mode','download'); // hack pour desactiver la compression gzip par buffer qui corromp le zip

--
_________________________________________

désolé, toujours sur F&T 191 SVN

il me semble qu'il a un pb sur /forms_et_tables_1_9_1/inc/forms_type_champs.php

135 function Forms_valide_conformite_champs_reponse_post($id_form, $id_donnee, $c = NULL, $structure = NULL){
136 $erreur = array();
137 if (!$structure){
138 include_spip("inc/forms");
139 $structure = Forms_structure($id_form);
140 }
141 142 foreach($structure as $champ=>$infos){
143 $type = $infos['type'];
144 if ($GLOBALS['spip_version_code']<1.92)
145 $val = _request($champ);
146 else
147 $val = _request($champ, $c);
148 if ( $val!=NULL && strlen($val) ) {

pour les champs fichier, $val est toujours vide
on ne vérifie donc jamais les champs fichier !
ce qui permet d'uploader ce que l'on veut comme fichier (un php par ex ...)

un correctif rapide qui permet de palier ce pb

//if ( $val!=NULL && strlen($val) ) {
$pasvide = false;
if (strlen($val)) $pasvide = true;
if ($type=='fichier') {
                 if ($_FILES[$champ]['name']) $pasvide = true;
}
                       if ($pasvide) {

--
_________________________________________
http://www.erational.org

erational wrote:

bonjour,

j'ai un soucis sur F&T 191 SVN sur l'export en zip

les archives zip d'export sont corrompues sur le serveur en ligne (un réparer avec utilitaire permet de les exploiter quand même)
alors que sur le serveur local, les archives exportées sont valides

c'était à cause de la configuration serveur qui compresse tous les headers avec gzip (mode deflate d'apache)
tous les fichiers (zip, .doc, ...) téléchargés depuis F&T étaient corrompus

pour la solution pour moi a été d'ajouter avant la déclaration d'headers sur:
exec/forms_telecharger.php
actions/forms_telecharger.php

les lignes:

        ob_end_clean(); // desactiver la compression gzip qui corrompt certains fichiers cf. PHP: header - Manual
        ini_set('zlib.output_compression','Off'); //
                 Header("Content....

--
_________________________________________