[RESOLU] Fichier corrompu avec readfile()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Fichier corrompu avec readfile()

Re: Fichier corrompu avec readfile()

par tom_nameless » 01 juin 2015, 12:39

Je viens de trouver une solution sur le forum :oops:
header('Content-Description: File Transfer');
		header('Content-Type: application/octet-stream');
		header('Content-Disposition: attachment; filename='.basename($chemin));
		header('Content-Transfer-Encoding: binary');
		header('Expires: 0');
		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
		header('Pragma: public');
		header('Content-Transfer-Encoding: binary');
		header('Content-Length:'.filesize($chemin));
		ob_clean();
		flush();
		readfile($chemin);
		exit;
Il me manquait des lignes utiles à la bonne exécution du script de lancement du téléchargement :
header('Content-Type: application/octet-stream');
...
ob_clean();
flush();
...
exit;

Fichier corrompu avec readfile()

par tom_nameless » 01 juin 2015, 12:01

Bonjour,

J'essai de mettre en place une page de téléchargement mais en vérifiant quelques info du membre avant de lancer ce téléchargement.

Mon problème est qu'un fichier est bien téléchargé mais impossible de le consulter car il est corrompu.
Message d'adobe : Acrobat n'a pas pu ouvrir ..... le fichier est endommagé (il a été envoyé en tant que pièce jointe et n'a pas été décodé correctement, par exemple).

Je ne sais pas comment faire car je ne trouve pas ce qui pourrait bloquer dans mon code :
if (file_exists($chemin))
	{
		header('Content-Description: File Transfer');
		header('Content-Type: application/force-download');
		header('Content-Disposition: attachment; filename='.basename($chemin));
		header('Expires: 0');
		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
		header('Pragma: public');
		header('Content-Transfer-Encoding: binary');
		header('Content-Length:'.filesize($chemin));
		readfile($chemin);
	} else {
		echo '<a href="'.$chemin.'">'.$chemin.'</a>';
	}