par
Ykar » 25 oct. 2013, 09:39
Bonjour,
- La française des jeux fournit un fichier ZIP téléchargeable ici :
https://media.fdj.fr/generated/game/lot ... u_loto.zip
Ce ZIP de 42 Ko contient un seul fichier CSV (100 Ko) qui contient tous les tirages du loto depuis 2008.
- J'aimerai récupérer ce zip du serveur FDJ avec le PHP puis le décompresser dans un dossier de mon hébergement (afin de pouvoir le parcourir, le traiter et afficher des statistiques depuis mon poste via javascript).
- Si je met le zip à la main via FTP dans mon répertoire racine ma fonction marche et je récupère bien le CSV dans un sous dossier.
PAR CONTRE ,si je vais chercher le Zip à distance ça ne marche pas.
Quelqu'un pourrait me donner une idée de ce qu'il se passe ?
voici mon code :
<?php
function unzip($file, $path='', $effacer_zip=false)
{/*Méthode qui permet de décompresser un fichier zip $file dans un répertoire de destination $path
et qui retourne un tableau contenant la liste des fichiers extraits
Si $effacer_zip est égal à true, on efface le fichier zip d'origine $file*/
$tab_liste_fichiers = array(); //Initialisation
$zip = zip_open($file);
if ($zip)
{
while ($zip_entry = zip_read($zip)) //Pour chaque fichier contenu dans le fichier zip
{
if (zip_entry_filesize($zip_entry) > 0)
{
$complete_path = $path.dirname(zip_entry_name($zip_entry));
/*On supprime les éventuels caractères spéciaux et majuscules*/
$nom_fichier = zip_entry_name($zip_entry);
$nom_fichier = strtr($nom_fichier,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
$nom_fichier = strtolower($nom_fichier);
$nom_fichier = ereg_replace('[^a-zA-Z0-9.]','-',$nom_fichier);
/*On ajoute le nom du fichier dans le tableau*/
array_push($tab_liste_fichiers,$nom_fichier);
$complete_name = $path.$nom_fichier; //Nom et chemin de destination
if(!file_exists($complete_path))
{
$tmp = '';
foreach(explode('/',$complete_path) AS $k)
{
$tmp .= $k.'/';
if(!file_exists($tmp))
{ mkdir($tmp, 0755); }
}
}
/*On extrait le fichier*/
if (zip_entry_open($zip, $zip_entry, "r"))
{
$fd = fopen($complete_name, 'w');
fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
fclose($fd);
zip_entry_close($zip_entry);
}
}
}
zip_close($zip);
/*On efface éventuellement le fichier zip d'origine*/
if ($effacer_zip === true)
unlink($file);
}
return $tab_liste_fichiers;
}
/**********************************************************/
$liste = array();
$liste = unzip('https://media.fdj.fr/generated/game/loto/nouveau_loto.zip','zips/');
echo 'Le fichier zip contenait '.count($liste).' fichier(s) :<br />';
foreach ($liste as $nom_fichier)
{
echo $nom_fichier.'<br />';
}
?>
Bonjour,
- La française des jeux fournit un fichier ZIP téléchargeable ici :
[url]https://media.fdj.fr/generated/game/loto/nouveau_loto.zip[/url]
Ce ZIP de 42 Ko contient un seul fichier CSV (100 Ko) qui contient tous les tirages du loto depuis 2008.
- J'aimerai récupérer ce zip du serveur FDJ avec le PHP puis le décompresser dans un dossier de mon hébergement (afin de pouvoir le parcourir, le traiter et afficher des statistiques depuis mon poste via javascript).
- Si je met le zip à la main via FTP dans mon répertoire racine ma fonction marche et je récupère bien le CSV dans un sous dossier.
PAR CONTRE ,si je vais chercher le Zip à distance ça ne marche pas.
Quelqu'un pourrait me donner une idée de ce qu'il se passe ?
voici mon code :
[php]<?php
function unzip($file, $path='', $effacer_zip=false)
{/*Méthode qui permet de décompresser un fichier zip $file dans un répertoire de destination $path
et qui retourne un tableau contenant la liste des fichiers extraits
Si $effacer_zip est égal à true, on efface le fichier zip d'origine $file*/
$tab_liste_fichiers = array(); //Initialisation
$zip = zip_open($file);
if ($zip)
{
while ($zip_entry = zip_read($zip)) //Pour chaque fichier contenu dans le fichier zip
{
if (zip_entry_filesize($zip_entry) > 0)
{
$complete_path = $path.dirname(zip_entry_name($zip_entry));
/*On supprime les éventuels caractères spéciaux et majuscules*/
$nom_fichier = zip_entry_name($zip_entry);
$nom_fichier = strtr($nom_fichier,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
$nom_fichier = strtolower($nom_fichier);
$nom_fichier = ereg_replace('[^a-zA-Z0-9.]','-',$nom_fichier);
/*On ajoute le nom du fichier dans le tableau*/
array_push($tab_liste_fichiers,$nom_fichier);
$complete_name = $path.$nom_fichier; //Nom et chemin de destination
if(!file_exists($complete_path))
{
$tmp = '';
foreach(explode('/',$complete_path) AS $k)
{
$tmp .= $k.'/';
if(!file_exists($tmp))
{ mkdir($tmp, 0755); }
}
}
/*On extrait le fichier*/
if (zip_entry_open($zip, $zip_entry, "r"))
{
$fd = fopen($complete_name, 'w');
fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
fclose($fd);
zip_entry_close($zip_entry);
}
}
}
zip_close($zip);
/*On efface éventuellement le fichier zip d'origine*/
if ($effacer_zip === true)
unlink($file);
}
return $tab_liste_fichiers;
}
/**********************************************************/
$liste = array();
$liste = unzip('https://media.fdj.fr/generated/game/loto/nouveau_loto.zip','zips/');
echo 'Le fichier zip contenait '.count($liste).' fichier(s) :<br />';
foreach ($liste as $nom_fichier)
{
echo $nom_fichier.'<br />';
}
?>[/php]