Probléme lors du download de zip (php)
boudigard
-
juli2000 -
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.
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:
- Probléme lors du download de zip (php)
- Télécharger 7-zip - Télécharger - Compression & Décompression
- Express zip - Télécharger - Compression & Décompression
- Comment ouvrir un fichier zip - Guide
- Microsoft store download - Guide
- Télécharger music mp3 gratuit download pc - Télécharger - Conversion & Extraction
2 réponses
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 ^^
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 ^^