Téléchargement corrompu

Téléchargement corrompu - PHP - Programmation

Marsh Posté le 16-02-2006 à 17:03:06    

Bonjour,
 
Lorsque je télécharge un pdf de mon site, le fichier téléchargé ne fait pas la meme taille que le fichier sur le serveur
Du coup il est corrompu ! Le pdf sur le serveur fait 2 Mo, une fois téléchargé il ne fait plus que 1.91 Mo.  :(  Une idée ?
 
je fais :
 

Code :
  1. if (strstr($HTTP_USER_AGENT,"MSIE" )) $attachment="";
  2. else $attachment=" attachment;";
  3. header( "Content-type: application/octet-stream" );
  4. header( "Content-Disposition:$attachment filename=test.pdf" );
  5. header( "Content-Description: File Transfert" );
  6. header( "Content-Length: ".filesize('test.pdf')."" );
  7. readfile('test.pdf');
  8. exit;


 
 
Par contre mon script a fonctionne pour des fichiers de 1Mo.
On dirait que la taille du document a télécharger peut influencer le succes de l'opération ...
 
Merci


Message édité par fabs2b le 16-02-2006 à 17:30:22
Reply

Marsh Posté le 16-02-2006 à 17:03:06   

Reply

Marsh Posté le 16-02-2006 à 17:07:39    

Ton fichier se termine par quoi? je serais pas étoné qu'il y ai une phrase contenant "time out" à la fin.
 
Explication : Un script php, par défaut, c'est 30 secondes maximum, donc si ton fichier est trés gros, le script sera stopé par le serveur avant la fin avec en prime un texte indiquant cet état de fait.
 
Une solution, pour voir les erreurs sans les afficher dans le navigateur (donc dans le fichier) c'est de créer une fonction de débug : voir "set_error_handler()" dans la documentation.

Reply

Marsh Posté le 16-02-2006 à 17:13:23    

Oui je comprend ce que tu veux dire.
 
Mais le fichier, je ne peux pas l'ouvrir puisqu'il est corrompu. Je ne peux voir le "time out" ...  
 
Lorsqu'on télécharge le fichier, le script de la page php est arreté, il ne contenu pas a s'éxécuter.  
Donc je ne pense pas que se soit le probleme des 30 secondes.
 
Mon fichier est un PDF, set_error_handler() fonctionne quand meme ?


Message édité par fabs2b le 16-02-2006 à 17:21:29
Reply

Marsh Posté le 16-02-2006 à 17:28:26    

Ba le timeout devrait se voir avec un éditeur de texte à la con, c'est pas l'encodage made in pdf les erreur..............

Reply

Marsh Posté le 16-02-2006 à 17:34:09    

dwogsi a écrit :

Ba le timeout devrait se voir avec un éditeur de texte à la con, c'est pas l'encodage made in pdf les erreur..............


 
 
J'ai ouvert le pdf avec notepad, j'ai fais une recherche mais je n'ai pas trouvé de "time out" ...
 
De plus ce n'est pas le pb du pdf, car j'ai zippé mon document et au final l'archive est endommagée.
Car le téléchargement n'est pas entierement terminé. (la taille est differente de l'originale)


Message édité par fabs2b le 16-02-2006 à 19:04:17
Reply

Marsh Posté le 16-02-2006 à 19:20:56    

On dirait qu il arrete le telechargement, alors que ce n'est pas fini.
Pourtant je met bien :
 

Code :
  1. header( "Content-Length: ".filesize($FICHIER_LOCAL)."" );


 
Pourquoi ca fonctionne pour des petits fichiers ?.... bizarre ...

Reply

Marsh Posté le 17-02-2006 à 10:17:13    

Ca fonctionne pour des petits fichiers par ce que la lecture du fichier sur le disque et l'envoie par php prend moins de 30 secondes.
Ca merde pour des gros par ce que ca mets surement plus de 30 secondes.
Trouve toi un lecteur hexadécimal et ouvre dedans le fichier qu'est pas envtié, tu véras bien ce qu'il y aura à la fin de ton fichier.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed