Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/07/2007, 14h33   #1
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
Par défaut Forcer le téléchargement d'un fichier

Bonjour a tous!
J'ai sur mon site Web une liste de fichiers (mp3 et mp4) que l'utilisateur peut consulter...j'aimerais aussi qu'il puisse télécharger ces fichiers et étant donner que le href=etc... fait ouvrir le fichier dans le navigateur et que moi je souhaite l'apparation de la fenetre ouvrir - enregistrer sous..., j'ai mis en place un script pris sur les FAQ de developpez.com (http://php.developpez.com/faq/?page=..._forcedownload) mais hélas il ne marche pas voici mon script :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
$Fichier_a_telecharger = $_REQUEST['file'];
$chemin = $_REQUEST['path'];
$fichier = $chemin.$Fichier_a_telecharger;
 
define('CFG_SYSTEM_FILENAME', $fichier); // Nom du fichier pour le système
define('CFG_SEND_FILENAME', CFG_SYSTEM_FILENAME); // Nom du ficher pour le navigateur
 
//
// Constantes à ne pas modifier
//
define('CFG_FILESIZE', filesize(CFG_SYSTEM_FILENAME));
define('CFG_FILE_MD5', md5_file(CFG_SYSTEM_FILENAME));
define('CFG_DATE_FORMAT', 'D, d M Y H:i:s');
 
//
// Quelques éléments nécessaires
//
error_reporting(0);
ini_set('zlib.output_compression', 0);
 
 
/*
* Les en têtes nécessaires
*/
 
//
// Gestion du cache
//
header('Pragma: public');
header('Last-Modified: '.gmdate(CFG_DATE_FORMAT).' GMT');
header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
 
//
// Informations sur le contenu à envoyer
//
header('Content-Tranfer-Encoding: none');
header('Content-Length: '.CFG_FILESIZE);
header('Content-MD5: '.base64_encode(CFG_FILE_MD5));
header('Content-Type: application/octetstream; name="'.CFG_SEND_FILENAME.'"');
header('Content-Disposition: attachement; filename="'.CFG_SEND_FILENAME.'"');
 
//
// Informations sur la réponse HTTP elle-même
//
header('Date: '.gmdate(CFG_DATE_FORMAT, time()).' GMT');
header('Expires: '.gmdate(CFG_DATE_FORMAT, time()+1).' GMT');
header('Last-Modified: '.gmdate(CFG_DATE_FORMAT, time()).' GMT');
 
 
/*
* Envoi du fichier
*/
 
readfile(CFG_SYSTEM_FILENAME);
lorsque je clique sur le bouton télécharger, mon écran m'affiche :
Warning filesize stat faile for http://monserveur/monfichier (error2 no such file or directory)
Puis toute une page de caractère "bizarre" ...pourtant le fichier existe bien (j'ai vérifier) et j'ai recopier exactement ce qui est indiqué dans la FAQ!!!

Si quelqu'un a une petite idée de mon problème, ça me dépannerait vraiment bien!!

Merci à vous!!!
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 16h17   #2
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
ça y'est résolu, le fichier étant distant il faut remplacer le filesize par ceci
Code :
1
2
3
4
5
6
7
8
9
 
$buffer = '';
if($fd = fopen ($chemin . $Fichier_a_telecharger, "r")) {
    while (!feof($fd)) {
        $buffer .= fgets($fd, 4096);
    }
    fclose ($fd);
}
$size = strlen($buffer);
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h09.


 
 
 
 
Partenaires

Hébergement Web