Probleme d'extraction avec ZipArchive

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 : Probleme d'extraction avec ZipArchive

Probleme d'extraction avec ZipArchive

par ic3m4n » 27 juil. 2009, 21:56

Bonjour tout le monde.
Alors voila, je suis en train de faire un site pour afficher/stocker/télécharger des photos d'un mariage.

Donc je souhaiterais que l'utilisateur, dans un formulaire, donne un fichier zip.
Je traite le zip (je fais quelques traitement sur le nom des fichiers à l'intérieur de l'archive, avant de dezipper), et ensuite donc le dezipper.

Mais c'est là que çà coince.
Je ne pense pas que çà soit une question de droits, car pour effectuer des test, j'ai passe mes dossiers avec un chmod 777 (je suis sous un Ubuntu avec lamp).

Je vous joins le bout de code qui traite le zip
$extensions_ok = array('zip');
      $err = '';
      if(!isset($_FILES['zip'])) { $err .= 'Vous n\'avez pas sélectionné de fichiers'. "<br/>"; }
      if(!in_array( substr(strrchr($_FILES['zip']['name'], '.'), 1), $extensions_ok ) ) { $err .= 'Veuillez sélectionner un fichier de type zip !'. "<br/>"; }

      if(empty($err)) {
	$myarchive = $_FILES['zip']['name'];
	$album_name = substr($myarchive, 0, strrpos($myarchive, '.'));

	//Creation de l'album ici ...
	/*
	$sql = 'INSERT INTO '.$table_album.' VALUES("","'.$album_name.'")';
	if(!mysql_query($sql)) { $err .= 'L\'album n\'a pas pu être créer<br/>'; }
	else { $msg = 'Album crée<br/>'; }


	$id_album = mysql_insert_id();*/
	$id_album = 15;


	//On recupere l'ID de l'album nouvellement crée. ($id_album)

	$i = 0;
	$zip = new ZipArchive;
	
	//print_r($_FILES);


	$res = $zip->open($_FILES['zip']['tmp_name']);
	if( $res === true ) {
	    //echo 'Nombres fichiers : '.$zip->numFiles.'<br/>';
	    for($i = 0; $i != $zip->numFiles; $i++) {
		  //echo 'i = '.$i.'<br/>';
		  //echo 'i = '.$i.' : '.$i+'_'+$zip->getNameIndex($i).'<br/>';
		  $temp = $id_album.'_'.$zip->getNameIndex($i);
		  //echo 'temp = '.$temp.'<br/>';
		  $zip->renameIndex($i , $temp);

		  //Insertion dans la base de données des noms des photos
		  $sql = 'INSERT INTO '.$table_photos.' VALUES("",'.$id_album.', "'.$zip->getNameIndex($i).'")';
		  //Executer la requete
		  
	    }
	    //On verifie $_FILES
	    //print_r($_FILES).'<br/>';
	    
	    if($zip->extractTo('./photos')) {
	      echo 'Extraction Réussi<br/>';
	    } else {
	      echo 'Extraction Echouée<br/>';
	    }

	    for($i = 0; $i < $zip->numFiles; $i++) {
	      //On a extrait les photos, maintenant on créer les vignettes
	      vignette('photos/'.$zip->getNameIndex($i), 'vignettes/'.$zip->getNameIndex($i), 200);
	    }
	}
      }
ps : j'ai commenté temporairement la création de l'album pour mettre un nombre fixe (je changerais ca plus tard :p)

Donc mon problème se trouve if($zip->extractTo('./photos')) je pense
L'architecture de mon site est la suivante

A la racine, j'ai plusieurs dossiers (dont un dossier inc/ et un dossier photos/), et ma page index.php
Le code ci-dessous provient d'une page dans le dossier inc, et j'aimerais stocker mes photos dans le dossier photos.

Je ne sais pas si mon problème bien d'un chemin (j'en ai essayé un paquet, mais à chaque fois, j'ai extraction echoué, et jamais aucun fichier dans mon dossier photos/)

Voila, si vous voyez un problème dans mon code, j'aimerais bien un peu d'aide :)
Merci d'avance :)