2009-12-22 10 views
1

Je me demande simplement s'il existe un moyen de configurer différents "type de contenu" lors du téléchargement via PHP? comme .mp3 et .pdf etc .. au lieu d'avoir à spécifier un seul type de fichier. Mon problème est que j'ai 2 types de fichiers à télécharger, un type est pdf et l'autre type est mp3, mais si je change le "type de contenu" en audio/mpeg, alors il ne montre pas l'extension pour le. pdf ... j'espère que vous comprenez? aidez s'il vous plaît!Php télécharger tous les types de fichiers

Répondre

0

Cette fonction fonctionne très bien pour moi:

function Download($path, $speed = null) 
{ 
    if (is_file($path) === true) 
    { 
     set_time_limit(0); 

     while (ob_get_level() > 0) 
     { 
      ob_end_clean(); 
     } 

     $size = sprintf('%u', filesize($path)); 
     $speed = (is_null($speed) === true) ? $size : intval($speed) * 1024; 

     header('Expires: 0'); 
     header('Pragma: public'); 
     header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
     header('Content-Type: application/octet-stream'); 
     header('Content-Length: ' . $size); 
     header('Content-Disposition: attachment; filename="' . basename($path) . '"'); 
     header('Content-Transfer-Encoding: binary'); 

     for ($i = 0; $i <= $size; $i = $i + $speed) 
     { 
      echo file_get_contents($path, false, null, $i, $speed); 

      while (ob_get_level() > 0) 
      { 
       ob_end_clean(); 
      } 

      flush(); 
      sleep(1); 
     } 

     exit(); 
    } 

    return false; 
} 

Vous pouvez également spécifier le cas échéant la vitesse maximale à laquelle le fichier est livré.

+0

pour moi, octet-flux ne fait rien, il envoie un fichier sans extension, et im en utilisant firefox developer edition – nosthertus

2

Si vous voulez dire que votre utilisateur télécharge du contenu envoyé depuis un script PHP, qui envoie également l'en-tête HTTP Content-type, ne pouvez-vous pas définir cet en-tête avec une valeur différente pour chaque type de fichier?

Quelque chose comme ça (pseudo-code):

if (file is a PDF) { 
    header('Content-type: application/pdf'); 
} else if (file is a MP3) { 
    header('Content-type: audio/mpeg'); 
} 

Et un cas « par défaut » peut être utile, si vous avez également d'autres fichiers que vous ne l'avez pas pensé tout de suite.

Questions connexes