Probléme lors du download de zip (php)

boudigard -  
 juli2000 -
Bonjour,
Je fait un site en php5 ou l'on permet au utilisateurs de télécharger un zip stocké dans une base MySQL sous forme blob ,le probléme est que quand on click pour downloader, le fichier zip telechargé contient une ligne vide au début, ce qui rend le fichier illisible pour la décompression .Voici le bout de code concernant cette partie:

$filename=$_GET["filenom"];

$query= "select file , size from base where filename='$filename'";
$result=mysql_query($query)or die(mysql_error());
$val= mysql_fetch_row($result);
$file=$val["0"];
$size=$val["1"];

ob_start();

header("Content-Type:application/force-download");
header("Content-disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfert-Encoding:application/x-gzip\n");
header("Content-Length: $size");
header("Pragma:no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public" );

ob_end_clean();
echo $file;

Le probléme est donc que les zip telechargés sont corrompus et ne s'ouvrent pas , et quand on ouvre le fichier avec wordpad on constate une ligne vide au début du fichier qui n'existe pas sur l'original.
Quand j'enleve cette ligne le fichier redevient valide.
Merci de m'aider.
A voir également:

2 réponses

Yann_SF
 
J'ai la même erreur... du moins lorsque j'essaie de manipuler mon archive a un format spécifique (Scorm)

voici mon code (si cela peut t'aider à résoudre ton problème) :

ob_start();

if (preg_match('/MSIE 5.5/', $_ENV['HTTP_USER_AGENT']) || preg_match('/MSIE 6.0/', $_ENV['HTTP_USER_AGENT']))
{
header('Content-Disposition: filename = "'.$filename.'"\n');
} else
{
header('Content-Disposition: attachment; filename = "'.$filename.'"\n');
}

header("Content-Type: application/zip\n");
header("Pragma: no-cache\n");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public\n");
header("Expires: 0\n");
header("Content-Transfer-Encoding: binary\n");
header("Connection: close\r\n\r\n" );
ob_end_clean();

readfile("../cache/".$filename);

exit();

- Import sur le site au format Scorm de l'archive téléchargée => Bad !
- Décompresser l'archiver téléchargée et ensuite recompresser avec Winrar et importer dans un autre site au format Scorm => Ok !

Donc c'est vraiment un problème au niveau gestion de la ligne vide dans le zip pendant le téléchargement.
Pourtant ob_start et ob_end_clean() permettent de résoudre de problème...

Si j'ai la réponse je la poste. Si tu as trouvé également ^^
0
juli2000
 
bonjour
avait vous resolu le probleme , je fait la meme chose que vous mais rien toujour ....
je telecharge mais le fichier est vide.
quelqu'un peut m'aider.
0