Bonjour à tous,
Suite à de nombreuses recherches, je rencontre toujours un souci pour archiver correctement des images.
Je m'explique. Pour mon stage, je dois développer une interface de saisie de programme.
Les informations entrées sont stockées dans une BDD et des images peuvent être uploadées.
Les informations sont introduites dans un fichier .csv qui se retrouvera, avec les images, dans un dossier spécifique au programme.
Je dois archiver l'ensemble des fichiers et des images pour l'envoyer par la suite sur un serveur FTP.
Avec le code ci-dessous, les images ont l'air d'être compressées avec les autres fichiers (au vue de la taille de l'archive) mais dès que je décompresse mon archive, j'ai le droit à la belle "Erreur : 1 Opération non permise".
J'utilise la librairie zip lib, et j'ai déjà testé la méthode "ZipArchive" en suivant les instructions de http://php.net/manual/fr/book.zip.php qui ne m'a même pas créé d'archive.
Je vous joins mon code :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 $zip = new zipfile() ; // liste des fichiers à compresser $files = array ( $file1 , $file2 , $file2 ) ; $i = 0 ; while ( count( $files ) > $i ) { $fo = fopen($files[$i],'r') ; //on ouvre le fichier $contenu = fread($fo, filesize($files[$i])) ; //on enregistre le contenu fclose($fo) ; //on ferme fichier //Commandes qui permet d'ajouter les fichiers 1 à 1 sans sous-dossiers (conformément à Poliris) if ($i==0){ $zip->addfile($contenu, "monFichier1.csv") ; //on ajoute le fichier } if ($i==1){ $zip->addfile($contenu, "monFichier2.txt") ; //on ajoute le fichier } if ($i==2){ $zip->addfile($contenu, "monFichier3.cfg") ; //on ajoute le fichier } $i++; } //Boucle qui permet d'ajouter toutes les images for($i=0;$i<21;$i++){ $fo = fopen($dossier."/".$photo[$i],'r') ; //on ouvre le fichier $contenu = fread($fo, filesize($dossier."/".$photo[$i])) ; //on enregistre le contenu fclose($fo) ; //on ferme fichier $zip->addFile($contenu, $photo[$i]); } $archive = $zip->file() ; // on associe l'archive $nomArchive = $dossier."/monArchive.zip"; // on enregistre l'archive dans un fichier $open = fopen( $nomArchive , "wb"); fwrite($open, $archive); fclose($open);
D'après mes recherches, la fonction d'archivage apprécie moyennement le fait que je "lise le contenu" d'un fichier image. J'ai bien conscience que je transforme le contenu de mon image en chaîne de caractère, mais si je fais un simple :
L'archive n'ajoute pas les images…
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $zip->addfile($maPhotoDansLeDossier, $photo[$i]) ;
En espérant trouver une solution , je vous salue !
Partager