problème de zip

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème de zip

problème de zip

par EnigmaT!K » 04 févr. 2012, 14:56

Bonjour à tous,

j'aurai besoin de votre aide car je suis dans l'impasse.
j'ai developpé une petite application pour gérer son livre de cave en ligne et j'aimerai offrir la possibilité aux utilisateurs de sauvegarder/restorer leurs données.

l'idée est de sauvegarder les données de chaque table dans un fichier séparé, de les zipper et d'en proposer le téléchargement.
la restore : on envoit le fichier, on le dézippe, on charge les fichiers via LOAD DATA FILE .

Mon problème est le suivant, j'arrive à faire la sauvegarde.
Je la renvoie au serveur, il la réceptionne bien, la copie ou je veux mais n'arrive pas à la dézipper.
si j'utilise ExtractTo de la classe ZIP il ne fait rien et je n'ai pas de message d'erreur.
avec la librairie pclzip j'obtiends un message Badformat. J'ai testé avec le fichier téléchargé ou en récupérant celui créer sur le serveur j'ai le meme problème. cela exclu je pense un probleme lors du téléchargement.

Maintenant si je dézippe le fichier téléchargé, que je le rezipe moi meme et que je le renvoi ma procédure fonctionne.
c'est donc à la création du zip que j'ai un soucis.
le site qui me sert http://cavea20.free.fr/index.php (util-util pour ce connecter)

mon code
$tables=array("tbl_vinappellation","tbl_vinconso","tbl_vincru","tbl_vinentree","tbl_vinmillesime","tbl_vinpays","tbl_vinreg");
//-----------------  ON A DEMANDE UNE SAUVEGARDE DES DONNEES ---------------------------
if (isset($_POST['save']) && !empty($_POST['save'])){

	$zipfile='restore/save.zip';
       // SECURITE EFFACE LE FICHIER EXISTANT
	if (file_exists($zipfile))	unlink($zipfile);	
	$zip = new PclZip($zipfile);
	$i=0;
	$connexion=connexion(HOTE,USER,PWD,DB);
		foreach ($tables as $nomtable){		// Pour chaque table
			$file=$nomtable.".sql";
                       //efface le fichier sql existant (on sait jamais)
			if (file_exists($file))	unlink($file);	
			// on crée le nouveau fichier
			$fp = fopen($file, 'w');		
			$req_table = ExecRequete("SELECT * FROM $nomtable",$connexion) ; 
			$nbr_champs = mysql_num_fields($req_table);
			// récupère le contenu  ss forme de tableau	
			while ($ligne = mysql_fetch_array($req_table)) {
				$insertions="";
				for ($i=0; $i<$nbr_champs; $i++)
                                {
				$insertions .= '\'' . mysql_real_escape_string($ligne[$i]) . '\'$';
				}
				$insertions = substr($insertions, 0, -1)."\r\n";
				fwrite($fp, $insertions);	// on enregistre le fichier sql
			 }
			fclose($fp);
			// La 1ère fois je crée l'archive ensuite j'ajoute les fichiers	
			if ($i==0){ 
				if ($zip->create($file) == 0) {
					die('Error : '.$zip->errorInfo(true));
					}
			}else{
				$v_list = $zip->add($file);
				if ($v_list == 0) {
					die("Error : ".$archive->errorInfo(true));
				}
			}
			$i++;
		}
		// on efface les fichiers sql
		foreach ($tables as $nomtable){	
			$file=$nomtable.".sql";
			if (file_exists($file))	unlink($file);
		}
		mysql_free_result($req_table);		
		mysql_close($connexion);
			
		header('Content-Transfer-Encoding: binary'); 
		header('Content-Disposition: attachment; filename="save.zip"'); 
		header("Pragma: no-cache");
		header("Expires: 0");
			
		readfile($zipfile);