probléme lors du download de zip en php - PHP - Programmation
MarshPosté le 30-04-2009 à 11:50:45
bonjour, Je fait un site en php5/MySQL qui permet aux utilisateurs de télécharger des zip par click sur un lien .les zip sont sauvegardés dans la la base sous la forme longblob .Mon problème est que aprés avoir telecharger le zip on ne peut l'ouvrir et on a un message qui dit que le fichier est invalide.En ouvrant le zip avec wordpad j'ai constaté qu'il y a une ligne vide au début du fichier qui n'existe pas sur l'original , quand je l'enléve le fichier redevient normal .Le problème est que je ne sais pas d'où provient cette ligne vide qui rend le zip invalide.Voila le code correspondant au download:
$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"];
Marsh Posté le 30-04-2009 à 11:50:45
bonjour,
Je fait un site en php5/MySQL qui permet aux utilisateurs de télécharger des zip par click sur un lien .les zip sont sauvegardés dans la la base sous la forme longblob .Mon problème est que aprés avoir telecharger le zip on ne peut l'ouvrir et on a un message qui dit que le fichier est invalide.En ouvrant le zip avec wordpad j'ai constaté qu'il y a une ligne vide au début du fichier qui n'existe pas sur l'original , quand je l'enléve le fichier redevient normal .Le problème est que je ne sais pas d'où provient cette ligne vide qui rend le zip invalide.Voila le code correspondant au download:
$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;
J'ai changé les headers plusieurs fois mais le probléme persiste.
Merci de m'aider.