Page 1 sur 1

Force le telechargement du fichier

Posté : 15 juil. 2014, 17:32
par rimie
Bonjour,

J'essai de telecharger un fichier MP3, mais il passe en lecture via le navigateur, mes code sont:

direct_download.php
$file = $_GET['file'];
$file = basename($file);
header ("Content-disposition: attachment; filename=".$file.";");
header("Content-Length: ".filesize($file));
readfile($siteURLHTTPServer1.'Downloads/Medias/'.$rub.'/'.$srub.'/'.$cat.'/'.$scat.'/'.$tilawa_type.$riwaya_type.'/MP3/'.$file);
exit();
Lien de telechargement
echo '<a href="Files/direct_download.php?file='.$domainSite.'_'.$scat.$num_pad.'.mp3" id="'.$id.'" style="cursor: pointer;" target="_BLANK"><img src="'.$path2icons.'Download32_32.png" class="embedDownload masterTooltip" width="25" height="25" align="absmiddle" /></a>';
Les fichier sont dans ces dossiers:
site.com/download/mp3/file.mp3
site.com/files/direct_download.php
site.com/files/download_link.php
Quand je telecharge le fichier, il retourne un fichier 0 octects, alors si je prends le lien direct du fichier il y a un fichier de 1MO.

Merci a vous

Re: Force le telechargement du fichier

Posté : 15 juil. 2014, 20:24
par xTG
download/mp3 ou Downloads/Medias ???
Et les autres variables sont-elles définies ? ;)

Pour forcer le téléchargement tu peux mentir sur le type dans le header en disant que c'est un binaire (application/octet-stream si je ne m'abuse).

Re: Force le telechargement du fichier

Posté : 16 juil. 2014, 12:46
par rimie
download/mp3 ou Downloads/Medias ???
Et les autres variables sont-elles définies ? ;)
C'est le chemin Downloads/Medias...
et les variables sont bien definies

Re: Force le telechargement du fichier

Posté : 16 juil. 2014, 20:26
par xTG
Problème lors de la rédaction du topic donc ?
site.com/download/mp3/file.mp3
Que retournes un file_exists() à la place du readfile() ?

Re: Force le telechargement du fichier

Posté : 25 juil. 2014, 16:20
par rimie
j'ai le fichier sur un autre serveur, enfin j'ai utilise cURL pour trouver la solution:
$url = $_GET['path'];

    $fileName = $_GET['file'];

    set_time_limit(0);
    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: application/download"); 
    header("Content-Disposition: filename=$fileName");

    $ch = curl_init($url.$fileName);
    curl_exec($ch);
    curl_close($ch);        
    exit();