FORCER LE TÉLÉCHARGEMENT

devmax98799 Messages postés 76 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 12 août 2009 - 17 mars 2004 à 11:33
spacedelta Messages postés 107 Date d'inscription jeudi 23 septembre 2010 Statut Membre Dernière intervention 20 novembre 2011 - 12 janv. 2011 à 20:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/21278-forcer-le-telechargement

spacedelta Messages postés 107 Date d'inscription jeudi 23 septembre 2010 Statut Membre Dernière intervention 20 novembre 2011
12 janv. 2011 à 20:14
Salut !
Il y a la soluce pour les certificats (htps)
Sur ce lien -->
http://www.phpsources.org/scripts62-PHP.htm
cs_lucas74 Messages postés 18 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 10 février 2009
6 déc. 2007 à 18:28
un script PHP de ton site, je pense, non ?
Sinon, tu n'a pas le code PHP ?
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
5 déc. 2007 à 21:15
Lucas74 =|> en forçant le téléchargement sur un fichier PHP ça marche (j'ai testé)
cs_lucas74 Messages postés 18 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 10 février 2009
5 déc. 2007 à 14:14
Heureusement, Non ! Tu ne peux pas !
Carlatocer Messages postés 4 Date d'inscription mardi 28 mars 2006 Statut Membre Dernière intervention 25 janvier 2008
12 févr. 2007 à 17:40
Cette source est trés utile.
Mais es qu'il est possible de telecharger un fichier php d'un site web.
Par exemple un site ou j'ai remarquer un trés bon script php. Es que je pourrais, si j'ai le lien précis du fichier, pouvoir le télécharger ?
Sa sa m'interreserait beaucoup.
Merci d'avance de votre réponse
cs_liukang Messages postés 1 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 1 septembre 2006
1 sept. 2006 à 18:41
Bonour à tous,

Au risque de passer pour un plaisantin, je vais appel à vous car j'en ai marre d'arpenter la toile et de ne tomber que sur des éléments incomplets de réponse...

Il est donc question de forcer le téléchargement d'un fichier (en l'occurence ici un mp3)...

Depuis flash :
" var fichierdld:String = _root.player.list.__dataProvider[_root.player.list.selectedIndex].data;

_root.dwldzik_btn.onRelease = function() {
getURL("DLD.php","_blank","POST");
};"

Dans mon DLD.php :
"<?php

header("Content-Disposition: attachment; filename=$fichierdld");
header("Content-type: application/force-download");

readfile($fichierdld);
?>

Et ça ne marche pas...
en fait IE me propose de sauver, ouvrir DLD.php ou d'annuler (c'est la fenètre qu'il me faut mais pour le fichier.mp3"

A l'aide

J'en ai marre de retourner toutes les pages internets de code (le problème est que le plus souvent Actionscript sur flash et php ne rassemblent pas les même admirateurs...lol) et d'éplucher l'aide de flash... Alors s'il vous plaît aider moi...

D'avance merci
GREGPUNK Messages postés 12 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 6 mars 2006
17 févr. 2006 à 14:43
C'est bon y'a qu'a mettre cette lign au début du fichier:
ini_set("memory_limit","50M"); // equivalent a 50Mo ;-)
GREGPUNK Messages postés 12 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 6 mars 2006
17 févr. 2006 à 14:28
ca ne marche pas pour les gros fichier >8Mo
Donc je recherche une méthode par htaccess
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
15 déc. 2005 à 15:32
Bonjour

J'ai ecris ce petit script. Seulement il pose problème !

En effet, quand la fenetre il me dit type inconnu (mame si dans le champ Type il m'indique bien le bon type) et le nom du fichier n'est pas recupéré (c'est le nom du script à la place)

Voici le code :

<?PHP
if (isset($_GET['fichier'])) {
$fichier=$_GET['fichier'];
$ext=substr(strrchr($fichier,"."),1);
header('Content-disposition: attachment; filename='.$fichier);
switch($ext){
case 'exe': header("Content-Type: application/force-download");
case 'zip': header("Content-Type: application/x-zip-compressed");
// j'ai fais court pour les type dans l'exemple lol
}
readfile($fichier);
}else{
echo 'Erreur dans le traitement du fichier';
}
?>

Merci de m'aider à y voir clair :)
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
4 juin 2005 à 14:48
Je ne comprend pas pourquoi, mais passer par un tel force download pour télécharger un fichier me fait parfois ramer le browser.

Si je veux télécharger un ZIP, il suffit que le header se lie au MIME déclaratif du format ZIP. En l'occurence, on a ceci qui marche bien mieux :

$Fichier = 'fichier.zip';
header('Content-Type: application/x-zip-compressed');
readfile($Fichier);

Pour trouvez les MIME facilement, ouvrez REGEDIT puis la clé "HKEY_CLASSES_ROOT\.???" où les points d'interrogation remplacent l'extension. Le résultat est donné par la valeur "Content Type".

Voilà qui va simplifier les choses. Reste plus qu'à bloquer par .HTACCESS le dossier où sont classés les ZIP, de manière à ce qu'ils ne soient accessibles que par un forced download provoqué par un script PHP. Les sessions se cachent derrière pour gérer les droits de téléchargement. Voir:
http://www.phpcs.com/forum.v2.aspx?ID=277521
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
9 avril 2005 à 12:07
Voir le lien ci-dessous pour quelques idées supplémentaires :
http://www.phpcs.com/forum.v2.aspx?ID=311070
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
12 févr. 2005 à 19:02
Merci de donner un fichier du type suivant. Il doit s'appeler "forcedown.php":

<?php
if (isset($_GET['downfile'])) {
header('Content-disposition: attachment; filename= '.$_GET['downfile']);
header('Content-Type: application/force-download');
readfile($_GET['downfile']);
} else {
echo ' Pas de fichier passé en commande. ';
echo '
Utilisez une ligne de commande du type:';
echo '
http://myweb.com/forcedown.php?downfile =fichier.txt';
}
?>

L'avantage est très grand, car en plus de forcer un téléchargement, vous pouvez en même temps gérer un compteur de téléchargement, ce qui est plutôt fort sympathique.

Mais c'est vrai que certains headers semblent manquants. Va savoir lesquels...
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
25 juil. 2004 à 15:57
chez moi, ca marche pas. j'ai voulu le rajouter à mon webftp ( http://www.phpcs.com/code.aspx?ID=24147),
et non seulement le telecargement ne demare pas, mais en plus, la page entiere est effacée (tout est blanc).
ejbye7 Messages postés 9 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 15 février 2007
13 juin 2004 à 13:59
$fichier est le chemin d'accès au fichier donc par exemple:
/pub/users/ejbye7/files/toto.fic
ou
c:/program files/easyphp/www/files/toto.fic
ou
simplement toto.fic si tous les fichiers se trouvent dans le même répertoire
ou cv/CV.PDF si cv est un sous-répertoire du répertoire courant et CV.PDF est situé dans ce sous-répertoire.

Autre solution:
imaginons que index.php appelle download.php via une balise
.
download.php contenant le code situé en haut de l'article se trouve dans le répertoire cv avec CV.PDF.
Ce code bien que fonctionnant (preuve au http://www.ejb-info.net avec les CV au format DOC ou PDF) n'est pas très propre: l'idéal serait que le fichier index.php s'appelle lui-même en spécifiant le téléchargement à effectuer (cela évite d'avoir une tonne de fichiers).

J'ignore si on peut faire une balise monstrueure comme celle décrite par fifayer, mais c'est à essayer! Ce serait assez Fun... Au pire: faites ce que je viens d'écrire (boucle sur index.php).

Pour fifayer: en effet, sur des sites, il arrive qu'ils demandent l'enregistrement de fichier pour des raisons diverses: il suffit de refuser l'enregistrement.
En principe, je devrait avoir répondu à toutes les questions dont je connais la réponse.

Ouf!!! Bon maintenant je vais me reposer: je n'ai plus écrit autant depuis longtemps...

Merci à tous pour vos commentaires et à plus.
EJB
fifayer Messages postés 73 Date d'inscription dimanche 29 décembre 2002 Statut Membre Dernière intervention 14 décembre 2010
13 juin 2004 à 00:23
C'est simple, il suffit de metre le nom du fichier à la place de $fichier.
Par contre reste à dire s'il faut le chemin complet du style "www.site.com/downloads/fichier.doc" ou simplement metre "fichier.doc"
Autre question : Est'il possible de le metre dans un lien du type [<?php
header( "> lien ] enfin c'est un peut compliqué...

Sinon cette source m'inquiette gravement ! Je ne savais pas que cela été posible, en effe, lors de surf sur des sites avec des pop-up vers des sites classé X, ils pourraient très bien me faire télécharger un fichier dont je n'ai pas envi tel un .exe logé dans le démarage...
enfin je divague mais sinon la source est bien trouvée..

Bonne prog A+
DivXter Messages postés 2 Date d'inscription dimanche 23 mai 2004 Statut Membre Dernière intervention 9 juin 2004
23 mai 2004 à 09:28
J'ai pas très bien compris cette phrase : ATTENTION: $fichier contient le chemin d'accès au fichier!!!
ejbye7 Messages postés 9 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 15 février 2007
13 mai 2004 à 09:22
Pour GREGPUNK:
Excusez-moi mais je n'ai pas très bien compris la question. Peut-être serait-il préférable d'écrire tous les mots dans leur bonne orthographe.
Je reste à votre disposition.
Cordialement.
GREGPUNK Messages postés 12 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 6 mars 2006
12 mai 2004 à 11:45
mais c bien joli met le fichier a downloader a le nom DOWNLOAD (si bien sur le fichier ou est le code est DOWNLOAD.php)

alors comme faire pour un truc.mp3 pour que l'utilisteur affiche le vrai nom du fichier a télécharger ?
cs_gege217 Messages postés 40 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 13 août 2008
19 mars 2004 à 09:56
Ca marche bien en http mais ca marche pas en https (sur IE par exemple).
Il manque des headers je crois...

.oOMimiLOo.
Taka_s_tiger Messages postés 32 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 5 juillet 2006
17 mars 2004 à 16:05
super
ca permet de même de récupéré l'intégralité d'une source php
c'est ce qu'il me manquait pour finalisé mon explorateur en php basé sur celui de DHkold
http://www.phpcs.com/code.aspx?ID=13073
mais avec presque autant d'option qu'un Client FTP

merci ;)
devmax98799 Messages postés 76 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 12 août 2009
17 mars 2004 à 11:33
il me semble qu'on peut le faire aussi avec les fichiers .HTACCESS

Enfin c'est toujours bon a savoir.
Rejoignez-nous