Force download fichier AVI !

Force download fichier AVI ! - PHP - Programmation

Marsh Posté le 06-08-2008 à 19:52:04    

Bonjour à tous,  
 
Je suis webmaster d'un site qui traite de la série Final Fantasy, et je souhaite proposer des vidéos en téléchargements pour les membres. Il y a de cela quelques mois j'avais développé un script de force download, qui marche parfaitement avec tout (musique, jeu), mais pas les vidéos.
 
La taille du fichier est bien la bonne, mais la vidéo est absolument illisible, j'ai d'abord pensé au content-type, mais impossible quel que soit celui que j'ai utilisé, et même le force download ne marche pas.
D'ailleurs je me rends compte que le script est moyen, mais je l'ai fait au moment où j'apprenais xD
 
Le script :
 
<?php
 session_start();
 
 if ((isset($_GET['id'])) AND (isset($_SESSION['Login']))) {
   
     $fileid = intval($_GET['id']);
     $res = mysql_query("SELECT * FROM Downloads WHERE ID='$fileid'" )or die(mysql_error());
   
     $row = mysql_fetch_assoc($res);
  $Catégorie = $row['Catégorie'];
  $fileurl = stripslashes($row['Chemin']);
  $filename = $row['Nom'];
  if (!isset($_GET['Action'])) {
   $filesize = @filesize($fileurl);
  }
  $fileextension = $row['Extension'];
  $filename = $filename.$fileextension;
   
 
   
  switch ($fileextension) {
    Case ".wmv": $ctype = "video/x-ms-wmv"; break;
    Case ".zip": $ctype = "application/zip"; break;
    Case ".mp3": $ctype = "audio/x-mp3"; break;
    Case ".mpg": $ctype = "video/mpeg"; break;
    case ".avi": $ctype = "video/x-msvideo"; break;  
             case ".pdf": $ctype = "application/pdf"; break;
             case ".doc": $ctype = "application/msword"; break;
             case ".gif": $ctype = "image/gif"; break;
             case ".png": $ctype = "image/png"; break;
             case ".jpg": $ctype = "image/jpg"; break;
             default: $ctype="application/octet-stream";
   }
   
   if(ini_get('zlib.output_compression'))
   ini_set('zlib.output_compression', 'Off');
     
         header("Pragma: public" );
         header("Expires: 0" );
         header("Cache-Control: must-revalidate, post-check=0, pre-check=0" );
         header("Cache-Control: private",false);
         header("Content-Type: $ctype" );
         header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
         header("Content-Transfer-Encoding: binary" );
         header("Content-Length: ".@filesize($fileurl));
   set_time_limit(0);
   
   mysql_query("UPDATE Downloads SET nbTel = nbTel+1 WHERE ID='$fileid'" );  
         $tailleTel = @readfile("$fileurl" ) or die("File not found." );
 
 }
?>
 
Evidemment si vous avez besoin de plus de détails, pas de problèmes ;)

Reply

Marsh Posté le 06-08-2008 à 19:52:04   

Reply

Marsh Posté le 06-08-2008 à 20:23:12    

et si tu fais un
 
header("Content-Type: tutu" );
 
il se passe quoi ?

Reply

Marsh Posté le 06-08-2008 à 21:07:35    

Change rien :'(
 

Reply

Marsh Posté le 06-08-2008 à 22:59:47    

Je crois que la vieille looserie, c'est qu'il faut mettre Content-disposition, avec un d minuscule. En tous cas moi j'ai ça, et si j'ai ça c'est qu'il y a une raison :D

Reply

Marsh Posté le 06-08-2008 à 23:00:05    

Snif aussi le traffic HTTP pour voir si tout est bon

Reply

Marsh Posté le 07-08-2008 à 11:24:31    

Nan ça change rien xD
 
Et je ne sais pas comment sniffer le traffic HTTP...

Reply

Sujets relatifs:

Leave a Replay

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