Forcer le téléchargement.

Discussion dans 'Web, design' créé par Xou, 18 Février 2007.

Statut de la discussion:
Fermée.
  1. Offline
    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);
    	}
    Xou, 18 Février 2007
    #1
  2. Offline
    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
    guslinux, 18 Février 2007
    #2
  3. Offline
    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 />
    
    Xou, 18 Février 2007
    #3
  4. Offline
    Jereck Procrastinateur
    Equipe GamerZ.be
    :cool:
    Jereck, 18 Février 2007
    #4
  5. Offline
    Xou I ♥ rien
    réglé, il aimait pas les variables tableaux ...
    Xou, 18 Février 2007
    #5
  6. Offline
    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.
    Xou, 18 Février 2007
    #6
  7. Offline
    Xou I ♥ rien
    Trouvé !

    Un espace qui s'était glissé avant la balise <?php .......
    Xou, 19 Février 2007
    #7
  8. Offline
    guslinux Gamerz'ien
    c'est délicat le php :p
    guslinux, 19 Février 2007
    #8
  9. Offline
    guslinux Gamerz'ien
    Tu utilises quel soft pour faire du php sous mac os ?
    guslinux, 19 Février 2007
    #9
  10. Offline
    Xou I ♥ rien
    MAMP comme aide aux serveurs
    dreamweaver pour le moment, jusqu'à trouver une licence pour zend sous mac.
    Xou, 19 Février 2007
    #10
  11. Offline
    Xou I ♥ rien
    J'avoue que je m'attendais pas à une connerie du genre en tout les cas.
    Xou, 19 Février 2007
    #11
Statut de la discussion:
Fermée.