Page 1 sur 1

Forcer un download de fichier....

Posté : 13 nov. 2007, 23:07
par André
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é.

Posté : 13 nov. 2007, 23:18
par Kaoteknik
As-tu essayé la fonction PHP "header" ? Elle permet d'effectuer des redirections de la même façon que la balise HTML "refresh"...

Forcer le téléchargement d'un fichier...

Posté : 13 nov. 2007, 23:23
par André
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 !

Posté : 13 nov. 2007, 23:33
par Kaoteknik
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. :(

Posté : 13 nov. 2007, 23:35
par h0_noMan
Il faut que tu modifies le Content-Type du document envoyé.
header('Content-type: application/octet-stream');

Forcer un download de fichier....

Posté : 13 nov. 2007, 23:44
par André
Comme ceci ?

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

Posté : 13 nov. 2007, 23:57
par h0_noMan
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 ?

Forcer le téléchargement d'un fichier...

Posté : 13 nov. 2007, 23:57
par André
Ben voilà, j'ai essayé, j'ai toujours le même cas !, le fichier se lit dans le Browser !

Posté : 14 nov. 2007, 00:09
par h0_noMan
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");
}

?>

Posté : 14 nov. 2007, 10:16
par Ryle
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.

RESOLU : Forcer le téléchargement d'un fichier...

Posté : 14 nov. 2007, 13:25
par André
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.