Forcer un download de fichier....

André
Invité n'ayant pas de compte PHPfrance

13 nov. 2007, 23:07

Bonjour

Je remet à jour un site, et me voici devant un cas :

comment transformer ceci en PHP :

<meta http-equiv="refresh" content="0;url=<?php echo "".$path."".$fichier.""?>">

En d'autres mots, comment forcer ou provoquer le téléchargement.

Merci.

André.

Eléphant du PHP | 185 Messages

13 nov. 2007, 23:18

As-tu essayé la fonction PHP "header" ? Elle permet d'effectuer des redirections de la même façon que la balise HTML "refresh"...

André
Invité n'ayant pas de compte PHPfrance

13 nov. 2007, 23:23

Oui, j'ai essayé le "Header", mais le fichier qui devrait être téléchargé s'ouvre dans mon navigateur.

Exemple, si c'est une vidéo, Quick time s'ouvre dans le navigateur et lit la video.

Je voudrait simplement forcer un Download, qui ouvre la fenêtre, voulez-vous sauvegarder... et choisir où le sauver....

Là je calle !

Eléphant du PHP | 185 Messages

13 nov. 2007, 23:33

Là j'avoue que ça dépasse mes compétences... Le javascript permet peut-être de réaliser ce que tu souhaites, mais je suis loin d'être calé dans ce domaine !

En plus à priori tu tiens absolument à ce que l'opération s'effectue par le biais du php, donc ça ne résoudrait pas ton problème. Désolé, je ne vois pas. :(

Eléphant du PHP | 445 Messages

13 nov. 2007, 23:35

Il faut que tu modifies le Content-Type du document envoyé.
header('Content-type: application/octet-stream');

André
Invité n'ayant pas de compte PHPfrance

13 nov. 2007, 23:44

Comme ceci ?

header('Content-type: application/octet-stream');
header('location: '.$path.''.$videoalire.');

Eléphant du PHP | 445 Messages

13 nov. 2007, 23:57

Tu dois te creer une page qui enverra le Content-Type puis lira le fichier.

Perso, je trouve que cela ne sert a pas grand chose, vu qu'au final l'utilisateur pourras le lire.
Alors, pourquoi le bloquer ?

André
Invité n'ayant pas de compte PHPfrance

13 nov. 2007, 23:57

Ben voilà, j'ai essayé, j'ai toujours le même cas !, le fichier se lit dans le Browser !

Eléphant du PHP | 445 Messages

14 nov. 2007, 00:09

Tu as du faire autre chose que ce que j'ai t'ai dit.

Par exemple :

download.php?file=X (ou X est un numero correspondant a un fichier)
<?php
//                        X=0                  X=1                  X=2
$fichiers = array('./MP3/fichier1.mp3','./MP3/fichier2.mp3','./MP3/fichier3.mp3');
$filename = $fichiers[intval($_GET['file'])] ;

if(is_file($filename) && file_exists($filename))
{
header('Content-type: application/octet-stream');
$handle = fopen ($filename, "r");
$contents = fread ($handle, filesize ($filename));
fclose ($handle);
}else{
header("HTTP/1.0 404 Not Found");
}

?>

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

14 nov. 2007, 10:16

Modération :

André, le forum FAQ contient des explications détaillées sur ce sujet :
:arrow: Forcer le téléchargement d'un fichier

Vérifier dans la FAQ ou faire une petite recherche préalable n'est pas superflu.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

André
Invité n'ayant pas de compte PHPfrance

14 nov. 2007, 13:25

Effectivement Piaf,

C'est ce que j'ai fait par la suite et j'ai trouvé exactement ce que j'avais besoin.

Qui-que le code ci-dessus est intéressant, je le mets de côté !.

Merci pour votre aide.