Rechercher : dans
Par :

Probléme lors du download de zip (php)

Dernière réponse le 7 mai 2009 à 21:34:39 boudigard, le 29 avr 2009 à 18:24:26 
 Signaler ce message aux modérateurs

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.

Configuration: Windows XP
Firefox 3.0.9

Meilleures réponses pour « probléme lors du download de zip (php) » dans :
Installation rapide de LAMP (Apache+MySql+php) sous Linux VoirLAMP = Linux+Apache+MySql+Php. C'est le serveur web par excellence. L'ensemble est facile à installer. Installation rapide sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 Le mot de passe administrateur mySQL...
PHP Parse error: unexpected '<' in ... eval()'d code on l VoirSymptômes Lors de l'utilisation de la fonction eval() en PHP, ce dernier se plaint et vous affiche un message de la forme suivante : PHP Parse error: syntax error, unexpected '
Télécharger Object Fix Zip VoirLors de téléchargement de fichier compressé au format ZIP sur Internet, il arrive qu’il soit compromis et que le contenu ne soit inaccessible. Alors soit vous devez re-télécharger soit trouver autres choses. Object Fix Zip est un outil mais...
PHP - Les variables VoirConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...
Fichier ZIP VoirFormat ZIP Un fichier ZIP est un fichier compressé. Dans le cas de fichiers découpés, il peut être accompagné de fichiers dont les noms sont séquentiellement R01, R02, R03, R04, etc. Lire un fichier ZIP Pour décompresser un fichier ZIP, il...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

 Yann_SF, le 7 mai 2009 à 21:34:39

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 ^^

Répondre à Yann_SF