Forcer le téléchargement.

Statut
N'est pas ouverte pour d'autres réponses.

Xou

I ♥ rien
Petit soucis avec le forcage d'un téléchargement.
Ici par exemple, j'essaie de forcer le téléchargement sur un zip.

http://www.xyo.be/download.php?file=1

Le forcage se passe bien, mais ce n'est psa le fichier attendu :-(
Si qqun a une idée de comment réussir à faier ce qui faut, ça serait sympa.

Le script se trouve sur le répertoire racine, tandis que vous pourrez le voir, le fichier à télécharger se trouve dans un dossier de la racine, download.

Code:
	if($res!=0)	
  	{
		$file['id'] = mysql_result($req,$i,"dl_id");
		$file['name'] = mysql_result($req,$i,"dl_name");
		$file['ext'] = mysql_result($req,$i,"dl_extension");
		$file['count'] = mysql_result($req,$i,"dl_count");
		$file['way'] = 'download/';

		$count = $data['count'];
		$count ++;
		$data['count'] = $count;

		MysqlConnect();
		$req_up = sprintf("UPDATE %s SET dl_count='%d' WHERE dl_id='%d' LIMIT 1",
		$table['dl'],$file['count'],$file['id']);
		mysql_query($req_up) or die ("bug");
		mysql_close(); 
		
		$file2dl = $file['way'].$file['name'];
		
		// on essaie de reconnaitre l'extension pour que le téléchargement corresponde au type de fichier afin d'éviter les erreurs de corruptions
	
		switch(strrchr(basename($file2dl), "."))
		{
			case "gz": $type = "application/x-gzip"; break;
			case "tgz": $type = "application/x-gzip"; break;
			case "zip": $type = "application/zip"; break;
			case "pdf": $type = "application/pdf"; break;
			case "png": $type = "image/png"; break;
			case "gif": $type = "image/gif"; break;
			case "jpg": $type = "image/jpeg"; break;
			case "txt": $type = "text/plain"; break;
			case "htm": $type = "text/html"; break;
			case "html": $type = "text/html"; break;
			default: $type = "application/octet-stream"; break;	
		}

		header("Content-disposition: attachment; filename=$file2dl");
		header("Content-Type: application/force-download");
		header("Content-Transfer-Encoding: $type\n"); // Surtout ne pas enlever le \n
		header("Content-Length: ".filesize($file2dl));
		header("Pragma: no-cache");
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
		header("Expires: 0");
		readfile($file2dl);
	}
 

guslinux

Gamerz'ien
Regarde si le flux de donnée correspond bien au flux de départ.

Je te conseille de tester avec un fichier txt et de comparer avant/après
 
1er
OP
Xou

Xou

I ♥ rien
Mince j'aurais du faire attention à ce qui avait dans le fichier:

Code:
 <br />
<b>Warning</b>:  filesize() [<a href='function.filesize'>function.filesize</a>]: Stat failed for download/test.txt (errno=2 - No such file or directory) in <b>/home/users2/p/petit/www/xyo/download.php</b> on line <b>55</b><br />
<br />
<b>Warning</b>:  readfile(download/test.txt) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: No such file or directory in <b>/home/users2/p/petit/www/xyo/download.php</b> on line <b>59</b><br />
 
1er
OP
Xou

Xou

I ♥ rien
réglé, il aimait pas les variables tableaux ...
 
1er
OP
Xou

Xou

I ♥ rien
Les zip sont tjs corrompus , mince :-(

En gros, ça crée un espace sur le premier octet du fichier et je vois pas comment m'en débarasser.
 
1er
OP
Xou

Xou

I ♥ rien
Trouvé !

Un espace qui s'était glissé avant la balise <?php .......
 

guslinux

Gamerz'ien
.Xyo a dit:
Trouvé !

Un espace qui s'était glissé avant la balise <?php .......
Tu utilises quel soft pour faire du php sous mac os ?
 
1er
OP
Xou

Xou

I ♥ rien
MAMP comme aide aux serveurs
dreamweaver pour le moment, jusqu'à trouver une licence pour zend sous mac.
 
1er
OP
Xou

Xou

I ♥ rien
guslinux a dit:
c'est délicat le php ^^
J'avoue que je m'attendais pas à une connerie du genre en tout les cas.
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut