Problème : impossible de forcer le téléchargement

Eléphanteau du PHP | 21 Messages

07 oct. 2012, 13:32

Bonjour !

Alors voilà : j'ai essayé récemment le script suivant :
header('Content-disposition: attachment; filename='.$filename); 
header('Content-Type: application/force-download'); 
header('Content-Transfer-Encoding: fichier');  
header('Content-Length: '.filesize($cheminfichier)); 
header('Pragma: no-cache'); 
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); 
header('Expires: 0'); 
readfile($cheminfichier); 
Où $filename=svt.avi & $cheminfichier=files/videos/svt.avi

Le téléchargement se lance, et non le streaming direct ( avec VLC par exemple ), donc ça c'est bon, mais le problème est que le fichier téléchargé pèse 1Ko, et non 500M ...

J'ai essayé de modifier le "application/force-download" par video/avi : même soucis. J'ai aussi fait : "Content-Type: '.mime_content_type($cheminfichier)" Rien à faire ! Le fichier téléchargé ne fait pas la taille réelle !

Pourriez-vous m'aider ?

Cordialement,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 oct. 2012, 16:28

Salut,

Y'a quoi dans le fichier ?
(Ouvre le avec éditeur de texte)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 21 Messages

07 oct. 2012, 18:42

Jai ceci : <br />
<b>Warning</b>: readfile() [<a href='function.readfile'>function.readfile</a>]: Filename cannot be empty in <b>/home/users/xxx/download.php</b> on line <b>xx</b><br />

J'ai testé ce code :
 <?php
$chemin1=$_POST['chemin'];
$filename=$_POST['filename'];
header("Content-disposition: attachment; filename=$filename"); 
header("Content-Type: application/force-download"); 
header("Content-Transfer-Encoding: filetype($chemin)\n"); 
header("Content-Length: ".filesize($chemin)); 
header("Pragma: no-cache"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); 
header("Expires: 0"); 
readfile($chemin1); 
?>
où filename=svt.avi, chemin1=monsite.com/file/videos/svt.avi et chemin=file/videos/svt.avi, mais j'ai la même chose!

Eléphanteau du PHP | 21 Messages

07 oct. 2012, 19:46

Hum, j'ai également ça !!

<b>Fatal error</b>: Allowed memory size of 134217728 bytes exhausted (tried to allocate 735850497 bytes) in <b>/home/users/xxx/download.php</b> on line <b>xx</b><br />

ViPHP
xTG
ViPHP | 7331 Messages

07 oct. 2012, 20:48

Jai ceci : <br />
<b>Warning</b>: readfile() [<a href='function.readfile'>function.readfile</a>]: Filename cannot be empty in <b>/home/users/xxx/download.php</b> on line <b>xx</b><br />
$_POST['filename'] est donc vide.

Mammouth du PHP | 2278 Messages

07 oct. 2012, 21:08

<?php
$chemin1=$_POST['chemin'];
$filename=$_POST['filename'];
print_r($_POST);//aiderait à y voir moins obscur
header("Content-disposition: attachment; filename=$filename");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: filetype($chemin)\n");
header("Content-Length: ".filesize($chemin));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
readfile($chemin1);
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 oct. 2012, 12:20

J'ajouterai à que c'est une belle faille de sécurité ton truc la, avec ça on peux avoir n'importe quel fichier de ton site XD.

Pour le reste : fichier trop gros pour php ...


@+
Il en faut peu pour être heureux ......