Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/08/2011, 18h34   #1
Invité de passage
 
Homme jaboute afrouto
Webmaster
Inscription : août 2011
Messages : 16
Détails du profil
Informations personnelles :
Nom : Homme jaboute afrouto
Localisation : Tunisie

Informations professionnelles :
Activité : Webmaster
Secteur : Enseignement

Informations forums :
Inscription : août 2011
Messages : 16
Points : 2
Points : 2
Par défaut Créer une page de téléchargement

Bonjour à tous

Je mets sur mon site des fichiers à télécharger. (fichiers word ,rar , zip et pdf.) Je voudrai faire des liens comme dans les sites spécialisés :

- sur la première page un lien : "cliquez ici pour télécharger" qui point" vers
Code :
http://www.monsite.net/telecharger.php?id=xxxxx
- sur la deuxième page du texte "le téléchargement va commencer dans quelques secondes. s'il ne se lance lance pas cliquez ici (un autre lien)".

Je pense que le mieux c'est de faire ça en PHP mais je n'y connais rien.
Est ce que vous pouvez m'expliquer.

Merci d'avance.
akab48 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 16/08/2011, 09h07   #2
Membre confirmé
 
Avatar de zulad
 
Inscription : juin 2007
Messages : 500
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 500
Points : 289
Points : 289
salut,

tu peux faire ça en javascript avec un timer pour le lien "dans quelques secondes" avec un location.href à la fin du timer. Dans ce cas pas besoin d'un php, c'est juste un hyperlien.

Pour le deuxième lien, c'est juste un hyperlien aussi.
__________________
Il y a trois grandes catégories d'individus : Les S:sensibles / Les P:penseurs / Les A:agités (Tous sont des animaux)
zulad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 00h22   #3
Invité de passage
 
Homme jaboute afrouto
Webmaster
Inscription : août 2011
Messages : 16
Détails du profil
Informations personnelles :
Nom : Homme jaboute afrouto
Localisation : Tunisie

Informations professionnelles :
Activité : Webmaster
Secteur : Enseignement

Informations forums :
Inscription : août 2011
Messages : 16
Points : 2
Points : 2
bonsoir

Merci zulad pour l'aide,
Mais j'ai des centaines de fichiers et je veux faire une seule page apparaît lorsque vous cliquez sur le lien
le Téléchargement des fichiers dans cette page.

merci
akab48 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 04h48   #4
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
La règle quand tu met un lien direct vers ton fichier est :

- Si le visiteur possède un logiciel pouvant ouvrir le fichier cible, le fichier sera ouvert par ce logiciel. Sinon il sera proposé en téléchargement.

Si tu veux pouvoir maîtriser le système pour obtenir toujours le même comportement, par exemple que le fichier soit toujours proposé par défaut en téléchargement même si le visiteur possède un logiciel qui permet d'ouvrir ce fichier, il faut passer par php pour lire ce fichier et forcer le téléchargement.

Un script du genre :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
//$dirfile = chemin complet du fichier
 
$filesize = filesize($dirfile);
$file = basename($dirfile);
 
header("Content-Type: application/force-download; name=\"".$file."\"");
header("Content-Transfer-Encoding: $type\n"); 
header("Content-Length: ".$filesize);
header("Content-Disposition: attachment; filename=\"".$file."\"");			
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public");
header("Pragma: no-cache"); 
header("Expires: 0"); 
readfile($dirfile);
A savoir que cela ne modifie que le comportement par défaut et le visiteur pourra toujours ouvrir directement le fichier s'il le souhaite (et s'il possède un logiciel adéquat).

Attention de bien vérifier le fichier avant de le proposer en téléchargement car ce genre de script peut être la source de failles majeures si le visiteur peut modifier le fichier à télécharger (en modifiant une variable $_GET par exemple).

Pour renseigner au mieux la variable $type de la ligne "header("Content-Transfer-Encoding: $type\n");" on peut faire un switch sur l'extension du fichier, par exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
switch($Ext) 
 
	{
		case ".gz": $type = "multipart/x-gzip"; break;
		case ".gzip": $type = "multipart/x-gzip"; break;
		case ".tgz": $type = "multipart/x-gzip"; break;
		case ".zip": $type = "multipart/x-zip"; break;
 
		case ".doc": $type = "application/msword"; break;
		case ".docx": $type = "application/msword"; break;
		case ".xls": $type = "application/vnd.ms-excel"; break;
		case ".xlsx": $type = "application/vnd.ms-excel"; break;
 
		case ".pdf": $type = "application/pdf"; break;
 
		case ".xml": $type = "application/xml"; break;
 
		case ".png": $type = "image/png"; break;
		case ".gif": $type = "image/gif"; break;
		case ".jpg": $type = "image/jpeg"; break;
		case ".jpeg": $type = "image/jpeg"; break;
		case ".jpe": $type = "image/jpeg"; break;
 
		case ".rtx": $type = "text/richtext"; break;
		case ".rtf": $type = "text/richtext"; break;
		case ".txt": $type = "text/plain"; break;
 
		case ".htm": $type = "text/html"; break;
		case ".html": $type = "text/html"; break;
 
		case ".csv": $type = "text/csv"; break;
 
		case ".odb": $type = "application/vnd.oasis.opendocument.database"; break;
		case ".odc": $type = "application/vnd.oasis.opendocument.chart"; break;
		case ".odf": $type = "application/vnd.oasis.opendocument.formula"; break;
		case ".odg": $type = "application/vnd.oasis.opendocument.graphics"; break;
		case ".odi": $type = "application/vnd.oasis.opendocument.image"; break;
		case ".odm": $type = "application/vnd.oasis.opendocument.text-master"; break;
		case ".odp": $type = "application/vnd.oasis.opendocument.presentation"; break;
		case ".ods": $type = "application/vnd.oasis.opendocument.spreadsheet"; break;
		case ".odt": $type = "application/vnd.oasis.opendocument.text"; break;
		case ".otg": $type = "application/vnd.oasis.opendocument.graphics-template"; break;
		case ".oth": $type = "application/vnd.oasis.opendocument.text-web"; break;
		case ".otp": $type = "application/vnd.oasis.opendocument.presentation-template"; break;
		case ".ots": $type = "application/vnd.oasis.opendocument.spreadsheet-template"; break;
		case ".ott": $type = "application/vnd.oasis.opendocument.text-template"; break;
 
		default: $type = "application/octet-stream"; 
	}
...mais beaucoup se contente de "application/octet-stream". Sinon si tu utilises php 5.3 tu peux essayer d'utiliser la fonction "finfo" pour trouver le type (recommandé si ça fonctionne).
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h09.


 
 
 
 
Partenaires

Hébergement Web