Forcer téléchargement

g.lebourgeois

Membre actif
30 Décembre 2006
174
4
Villejuif
www.guillaume-lebourgeois.fr
Bonjour,
je possède un site dans lequel je présente mes "créations audiovisuelles", et je souhaiterais qu'un simple clic fasse télécharger les fichiers vidéos, au lieu de les lancer dans le navigateur, qui n'arrive généralement pas à les lire.
Je viens de passer mon après-midi sur google, et le consensus tourne autour de l'utilisation d'une page intermédiaire contenant des header, du type :

header("Content-disposition: attachment; filename=$fichier");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($fichier));
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");
readfile($fichier);

J'ai testé, ça marche jusqu'à un certain point : le téléchargement se lance, mais systématiquement les fichiers obtenus sont corrompus, et illisibles par quelque logiciel que ce soit... cette solution semble fonctionner sur windows (étant donné mon parcours des forums PC sur le sujet), et je suppose donc que le problème viendrait d'Unix/MacosX... quelqu'un aurait une idée ? je suis complètement paumé là !

Merci !
 
Bonjour,
je possède un site dans lequel je présente mes "créations audiovisuelles", et je souhaiterais qu'un simple clic fasse télécharger les fichiers vidéos, au lieu de les lancer dans le navigateur, qui n'arrive généralement pas à les lire.
Je viens de passer mon après-midi sur google, et le consensus tourne autour de l'utilisation d'une page intermédiaire contenant des header, du type :

header("Content-disposition: attachment; filename=$fichier");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($fichier));
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");
readfile($fichier);

J'ai testé, ça marche jusqu'à un certain point : le téléchargement se lance, mais systématiquement les fichiers obtenus sont corrompus, et illisibles par quelque logiciel que ce soit... cette solution semble fonctionner sur windows (étant donné mon parcours des forums PC sur le sujet), et je suppose donc que le problème viendrait d'Unix/MacosX... quelqu'un aurait une idée ? je suis complètement paumé là !

Merci !
c'est quoi le format des vidéo ?
le problème vient peut-être de là, si tes vidéo sont en wmv encoder avec un windows média player récent, il ne sont peut-être pas lisible sur mac, même avec flip4mac.
 
Non non, mes vidéo sont encodées via ffmpegx, et donc en avi basé sur généralement sur du mpeg. J'en ai aussi une ou deux en .mov... bref pas de wmv chez moi, je ne suis pas très fan de ce format.
c'est bien :D :D :rateau:


Bon alors je ne voit pas d'ou peut venir le problème... faut attendre que quelqu'un de plus compétent se ramène :zen:
 
Est-ce que tes fichiers ont des extensions correctes ? Est-ce que le fichier qui apparaît finalement sur le bureau a une extension correcte ?
 
mais aussi 'binary' et '' (unspecified)

bref, ce n'est pas gagné.
 
Formidable, ça marche du tonnerre, et sans aucun effort, c'est beaucoup plus élégant que ces histoires de header !
Pour information, mon .htaccess ressemble donc à ça :

Bloc de code:
ErrorDocument 404 /index.php
AddType application/octet-stream .avi
AddType application/octet-stream .mpg
AddType application/octet-stream .mp3
AddType application/octet-stream .mov
AddType application/octet-stream .mp4

Merci pour le tuyau !

PS pour hero : je suis chez free, et je ne peux pas me connecter en ssh, seulement en ftp...
 
Formidable, ça marche du tonnerre, et sans aucun effort, c'est beaucoup plus élégant que ces histoires de header !
Pour information, mon .htaccess ressemble donc à ça :

Bloc de code:
ErrorDocument 404 /index.php
AddType application/octet-stream .avi
AddType application/octet-stream .mpg
AddType application/octet-stream .mp3
AddType application/octet-stream .mov
AddType application/octet-stream .mp4

Merci pour le tuyau !

PS pour hero : je suis chez free, et je ne peux pas me connecter en ssh, seulement en ftp...
Bloc de code:
ErrorDocument 404 /index.php
AddType application/octet-stream .avi .mpg .mp3 .mov .mp4
ça devrait fonctionner comme ça.
 
Bonjour,

Je suis très intéressé par cette méthose en .htaccess… mais je suis très nul en programmation… j'ai rein compris à ce qu'il fallait faire.
Sous Mac, créer un fichier qui commence par un point crée un fichier invisible… ????
Il faut écrire quoi où, s'il vous plait ?
Merci.
 
Bonjour,

Je suis très intéressé par cette méthose en .htaccess… mais je suis très nul en programmation… j'ai rein compris à ce qu'il fallait faire.
Sous Mac, créer un fichier qui commence par un point crée un fichier invisible… ????
Il faut écrire quoi où, s'il vous plait ?
Merci.
Il faut écrire
Bloc de code:
AddType application/octet-stream .les .extension .auquel .tu .veux .appliquer .le .téléchargement .direct
dans un fichier .htaccess

Sur tout mac appel le htaccess.txt par exemple si tu as besoin de le voir et renomme le en .htaccess une fois sur le serveur ftp :)