Download un fichier qui est sur le serveur??
Résolu/Fermé
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
-
10 févr. 2010 à 09:22
leoetevan Messages postés 110 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 16 juillet 2012 - 10 févr. 2010 à 13:57
leoetevan Messages postés 110 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 16 juillet 2012 - 10 févr. 2010 à 13:57
A voir également:
- Download un fichier qui est sur le serveur??
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
19 réponses
gaerebut
Messages postés
1017
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2013
171
10 févr. 2010 à 09:51
10 févr. 2010 à 09:51
Bonjour,
essaye comme ça:
Tiens moi au courant si ça marche!
A+
Gaerebut
essaye comme ça:
<?php $chemFichier=$_GET['chemFichier']; //chemin type: /dossier1/dossier2/fichier.odt par exemple $nomFichier =$_GET['nomFichier']; //nom type: fichier.odt $extFichier =$_GET['extFichier']; $tailleFichier = filesize($chemFichier); switch ($extFichier){ case ".doc": header("content-type: application/msword"); break; case "docx": header("content-type: application/msword"); break; case ".ppt": header("content-type: application/vnd.ms-powerpoint"); break; case ".odt": header("content-type: application/vnd.oasis.opendocument.text"); break; } header('Content-Length:'.$tailleFichier); header('Content-Disposition: attachment; filename="'.$nomFichier.'"'); readfile($chemFichier); ?>
Tiens moi au courant si ça marche!
A+
Gaerebut
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
2
10 févr. 2010 à 10:05
10 févr. 2010 à 10:05
Non. Ca ne change rien du tout. mais merci d'essayer en tout cas parce que là je désespère!!! lol
gaerebut
Messages postés
1017
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2013
171
10 févr. 2010 à 10:09
10 févr. 2010 à 10:09
Vérifie sur le serveur si il est bien complet !
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
2
10 févr. 2010 à 10:13
10 févr. 2010 à 10:13
Oui quand j'ouvre le fichier directement du serveur, ça fonctionne bien. Le fichier s'ouvre normalement.
C'est se que je disais dans mon premier post, la partie upload fonctionne bien. C'est d'ailleur le premier truc que j'ai vérifié.
C'est se que je disais dans mon premier post, la partie upload fonctionne bien. C'est d'ailleur le premier truc que j'ai vérifié.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
gaerebut
Messages postés
1017
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2013
171
10 févr. 2010 à 10:29
10 févr. 2010 à 10:29
Il s'ouvre mais il est complet ?! lol
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
2
10 févr. 2010 à 10:33
10 févr. 2010 à 10:33
lol oui oui il est complet! il affiche bien la même chose que l'original!lol
gaerebut
Messages postés
1017
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2013
171
10 févr. 2010 à 10:36
10 févr. 2010 à 10:36
C'est bizarre car j'ai également fait plusieurs fois des upload de fichier (PDF complet lol), et je n'est pas eu de soucis ce ce type...
Pour moi, tu avais juste oublié de préciser la taille du fichier ... :-(
Désolé, je sais pas plus :-(
A+
Gaerebut
Pour moi, tu avais juste oublié de préciser la taille du fichier ... :-(
Désolé, je sais pas plus :-(
A+
Gaerebut
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
2
10 févr. 2010 à 10:40
10 févr. 2010 à 10:40
C'est moche!! je ne vois vraiment pas se qui cloche!! merci quand même. Si une idée te vient à l'esprit, n'hésite pas à me le faire savoir
Bonjour
Enlève les ligne header pour qu'il affiche directement le readfile
Tu verras bien si ce qu'il envoie ressemble au contenu d'un fichier, ou est vide, ou est un message d'erreur...
Tu peux aussi tester is_file ($chemFichier), pour voir
Enlève les ligne header pour qu'il affiche directement le readfile
Tu verras bien si ce qu'il envoie ressemble au contenu d'un fichier, ou est vide, ou est un message d'erreur...
Tu peux aussi tester is_file ($chemFichier), pour voir
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
2
10 févr. 2010 à 11:05
10 févr. 2010 à 11:05
Bonjour,
Lorsque j'enlève les lignes header, voilà se qu'il m'affiche:
PKb�m;^�2''mimetypeapplication/vnd.oasis.opendocument.textPKb�m;Configurations2/statusbar/PKb�m;'Configurations2/accelerator/current.xmlPKPKb�m;Configurations2/floater/PKb�m;Configurations2/popupmenu/PKb�m;Configurations2/progressbar/PKb�m;Configurations2/menubar/PKb�m;Configurations2/toolbar/PKb�m;Configurations2/images/Bitmaps/PKb�m;content.xml��r��_�Q&���/�+�S�f7Ikoݵ�i�v ��% %{�%yk<��{��I��EQ�DS��7�>�Ksp�/�� |4!\P���UC$t�G��I����[���w_�ᐺ��17 H.c�;}���ϰ�� ~��YD�9V?�Ws����p;&7qUd ����gV�yl��iUd BͣYU��CR"�.n|�=���8��t:�Ou�G����L�6c��ࢄ� �sM�9�0�m�a��I�<>c,cU"hU�:��4�szZ >�4&<��w3��`���6� i���KA� ��_g���H�o�W�xL�6h(b.$å6��er1g�V��-
et ça se n'est que qu'elque ligne. A la base, c'est un fichier .odt
Le is_file ($chemFichier) il faudrait que je le mette où?
Lorsque j'enlève les lignes header, voilà se qu'il m'affiche:
PKb�m;^�2''mimetypeapplication/vnd.oasis.opendocument.textPKb�m;Configurations2/statusbar/PKb�m;'Configurations2/accelerator/current.xmlPKPKb�m;Configurations2/floater/PKb�m;Configurations2/popupmenu/PKb�m;Configurations2/progressbar/PKb�m;Configurations2/menubar/PKb�m;Configurations2/toolbar/PKb�m;Configurations2/images/Bitmaps/PKb�m;content.xml��r��_�Q&���/�+�S�f7Ikoݵ�i�v ��% %{�%yk<��{��I��EQ�DS��7�>�Ksp�/�� |4!\P���UC$t�G��I����[���w_�ᐺ��17 H.c�;}���ϰ�� ~��YD�9V?�Ws����p;&7qUd ����gV�yl��iUd BͣYU��CR"�.n|�=���8��t:�Ou�G����L�6c��ࢄ� �sM�9�0�m�a��I�<>c,cU"hU�:��4�szZ >�4&<��w3��`���6� i���KA� ��_g���H�o�W�xL�6h(b.$å6��er1g�V��-
et ça se n'est que qu'elque ligne. A la base, c'est un fichier .odt
Le is_file ($chemFichier) il faudrait que je le mette où?
Le is_file n'est plus utile, on voit qu'il trouve bien le fichier et qu'il l'envoie bien.
Peux-tu comparer les fichiers originaux avec ceux que tu downloades ? La taille au moins (la taille exacte, pas celle occupée sur le disque). Regarde le début avec un éditeur hexadécimal pour voir s'il y a des modifications
Peux-tu comparer les fichiers originaux avec ceux que tu downloades ? La taille au moins (la taille exacte, pas celle occupée sur le disque). Regarde le début avec un éditeur hexadécimal pour voir s'il y a des modifications
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
2
10 févr. 2010 à 11:48
10 févr. 2010 à 11:48
en hexa, non ça ne sont pas les même.
Celui sur le serveur et qui s'ouvre bien fait
64,00KB avec streams
64,00KB sans streams
Celui téléchargé fait
64,02KB avec streams
64,00KB sans streams
Pour moi c'est un peu du chinois lol mais si ça peut t'aider à m'aider...
Celui sur le serveur et qui s'ouvre bien fait
64,00KB avec streams
64,00KB sans streams
Celui téléchargé fait
64,02KB avec streams
64,00KB sans streams
Pour moi c'est un peu du chinois lol mais si ça peut t'aider à m'aider...
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
2
10 févr. 2010 à 11:50
10 févr. 2010 à 11:50
Le début du fichier qui fonctionne en hexa:
d0 cf 11 e0 a1 b1 1a e1 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 3e 00 03 00 fe ff 09 00
06 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
79 00 00 00 00 00 00 00 00 10 00 00 7c 00 00 00
01 00 00 00 fe ff ff ff 00 00 00 00 78 00 00 00
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
l'autre fichier:
3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 20 50
55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44
54 44 20 58 48 54 4d 4c 20 31 2e 30 20 53 74 72
69 63 74 2f 2f 45 4e 22 20 22 68 74 74 70 3a 2f
2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 78
68 74 6d 6c 31 2f 44 54 44 2f 78 68 74 6d 6c 31
2d 73 74 72 69 63 74 2e 64 74 64 22 3e 0d 0a 3c
68 74 6d 6c 20 78 6d 6c 6e 73 3d 22 68 74 74 70
d0 cf 11 e0 a1 b1 1a e1 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 3e 00 03 00 fe ff 09 00
06 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
79 00 00 00 00 00 00 00 00 10 00 00 7c 00 00 00
01 00 00 00 fe ff ff ff 00 00 00 00 78 00 00 00
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
l'autre fichier:
3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 20 50
55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44
54 44 20 58 48 54 4d 4c 20 31 2e 30 20 53 74 72
69 63 74 2f 2f 45 4e 22 20 22 68 74 74 70 3a 2f
2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 78
68 74 6d 6c 31 2f 44 54 44 2f 78 68 74 6d 6c 31
2d 73 74 72 69 63 74 2e 64 74 64 22 3e 0d 0a 3c
68 74 6d 6c 20 78 6d 6c 6e 73 3d 22 68 74 74 70
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
2
10 févr. 2010 à 11:52
10 févr. 2010 à 11:52
et l'adresse de la première ligne aussi est différente
le fichier qui va bien : 0000000f
l'autre fichier : 00000000
le fichier qui va bien : 0000000f
l'autre fichier : 00000000
Et l'adresse de la première ligne aussi est différente
ça veut dire quoi, l'adresse de la première ligne d'un fichier ? Un fichier commence au début, c'est tout
De toutes façons, il y a un gros problème : le code hexa que tu montres commence par <!DOCTYPE
Le script que tu montres dans ton 1er post et que tu appelles download.php ne serait-il pas inclus dans un autre, qui s'appellerait testDownload2.php toujours d'après ton 1er message
Car on a l'impression que tu envoies plus que ton fichier
Peux tu donner TOUT le script de download ?
ça veut dire quoi, l'adresse de la première ligne d'un fichier ? Un fichier commence au début, c'est tout
De toutes façons, il y a un gros problème : le code hexa que tu montres commence par <!DOCTYPE
Le script que tu montres dans ton 1er post et que tu appelles download.php ne serait-il pas inclus dans un autre, qui s'appellerait testDownload2.php toujours d'après ton 1er message
Car on a l'impression que tu envoies plus que ton fichier
Peux tu donner TOUT le script de download ?
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
2
10 févr. 2010 à 12:31
10 févr. 2010 à 12:31
oui désolé. Il n'y a pas de download.php. Ma page dowload est testDownload2.php. En voici le code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<?php
$chemFichier=$_GET['chemFichier']; //chemin type: /dossier1/dossier2/
$nomFichier =$_GET['nomFichier']; //nom type: fichier.odt
$extFichier =$_GET['extFichier'];
$tailleFichier = filesize($chemFichier);
switch ($extFichier){
case ".doc": header("content-type: application/msword");
break;
case "docx": header("content-type: application/msword");
break;
case ".ppt": header("content-type: application/vnd.ms-powerpoint");
break;
case ".odt": header("content-type: application/vnd.oasis.opendocument.text");
break;
}
header('Content-Transfer-Encoding: none');
header('Content-Length:'.$tailleFichier);
header('Content-Disposition: attachment; filename="'.$nomFichier.'"');
readfile($chemFichier);
?>
<body>
</body>
</html>
et le code qui m'envoi sur cette page, c'est celui de mon premier post
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<?php
$chemFichier=$_GET['chemFichier']; //chemin type: /dossier1/dossier2/
$nomFichier =$_GET['nomFichier']; //nom type: fichier.odt
$extFichier =$_GET['extFichier'];
$tailleFichier = filesize($chemFichier);
switch ($extFichier){
case ".doc": header("content-type: application/msword");
break;
case "docx": header("content-type: application/msword");
break;
case ".ppt": header("content-type: application/vnd.ms-powerpoint");
break;
case ".odt": header("content-type: application/vnd.oasis.opendocument.text");
break;
}
header('Content-Transfer-Encoding: none');
header('Content-Length:'.$tailleFichier);
header('Content-Disposition: attachment; filename="'.$nomFichier.'"');
readfile($chemFichier);
?>
<body>
</body>
</html>
et le code qui m'envoi sur cette page, c'est celui de mon premier post
Voila la solution !
TOUT ce qu'il y a avant <?php est en trop De même pour tout ce qui est après le ?>
Ça se retrouve dans le fichier transmis, qui, du coup, est corrompu
Les balises <!doctype, <html> etc.. sont pour les documents HTML. Or toi, tu n'envoies pas un document HTML mais un fichier. Tu ne dois rien envoyer d'autre que les header() et le fichier
Fais attention de n'avoir même aucun caractère avant le <?php (même pas une ligne vide) ni après le ?> (même pas un caractère de fin de ligne)
TOUT ce qu'il y a avant <?php est en trop De même pour tout ce qui est après le ?>
Ça se retrouve dans le fichier transmis, qui, du coup, est corrompu
Les balises <!doctype, <html> etc.. sont pour les documents HTML. Or toi, tu n'envoies pas un document HTML mais un fichier. Tu ne dois rien envoyer d'autre que les header() et le fichier
Fais attention de n'avoir même aucun caractère avant le <?php (même pas une ligne vide) ni après le ?> (même pas un caractère de fin de ligne)
gaerebut
Messages postés
1017
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2013
171
10 févr. 2010 à 13:20
10 févr. 2010 à 13:20
Re,
oui, il ne faut JAMAIS qu'il n'y est quelque chose d'écrit avant un header!
A+
Gaerebut
oui, il ne faut JAMAIS qu'il n'y est quelque chose d'écrit avant un header!
A+
Gaerebut
aucun rapport.
Il peut y avoir quelque chose avant le header, car il peut y avoir une bufferisation des données.
Le problème dans ce cas est que les informations transmises inutilement corrompent le fichier. Elles le corrompraient exactement de la même manière si elles étaient placées après les headers
Il peut y avoir quelque chose avant le header, car il peut y avoir une bufferisation des données.
Le problème dans ce cas est que les informations transmises inutilement corrompent le fichier. Elles le corrompraient exactement de la même manière si elles étaient placées après les headers
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
2
>
le père
10 févr. 2010 à 13:31
10 févr. 2010 à 13:31
En gros, tu es en train de me dire qu'il faut que je cré un fichier.php et dedans, je ne met QUE ça?
<?php
$chemFichier=$_GET['chemFichier']; //chemin type: /dossier1/dossier2/
$nomFichier =$_GET['nomFichier']; //nom type: fichier.odt
$extFichier =$_GET['extFichier'];
$tailleFichier = filesize($chemFichier);
switch ($extFichier){
case ".doc": header("content-type: application/msword");
break;
case "docx": header("content-type: application/msword");
break;
case ".ppt": header("content-type: application/vnd.ms-powerpoint");
break;
case ".odt": header("content-type: application/vnd.oasis.opendocument.text");
break;
}
header('Content-Transfer-Encoding: none');
header('Content-Length:'.$tailleFichier);
header('Content-Disposition: attachment; filename="'.$nomFichier.'"');
readfile($chemFichier);
?>
<?php
$chemFichier=$_GET['chemFichier']; //chemin type: /dossier1/dossier2/
$nomFichier =$_GET['nomFichier']; //nom type: fichier.odt
$extFichier =$_GET['extFichier'];
$tailleFichier = filesize($chemFichier);
switch ($extFichier){
case ".doc": header("content-type: application/msword");
break;
case "docx": header("content-type: application/msword");
break;
case ".ppt": header("content-type: application/vnd.ms-powerpoint");
break;
case ".odt": header("content-type: application/vnd.oasis.opendocument.text");
break;
}
header('Content-Transfer-Encoding: none');
header('Content-Length:'.$tailleFichier);
header('Content-Disposition: attachment; filename="'.$nomFichier.'"');
readfile($chemFichier);
?>
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
2
10 févr. 2010 à 13:37
10 févr. 2010 à 13:37
Ok Ok merci. Je ne sais pas quoi dire. Pour moi le DOCTYPE était une chose obligatoire. Effectivement, ça fonctionne impeccable maintenant. Et merci pour les explications.
C'est en faisant des erreurs qu'on apprend dit t'on!! lol
Merci encore
C'est en faisant des erreurs qu'on apprend dit t'on!! lol
Merci encore
leoetevan
Messages postés
110
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
16 juillet 2012
2
10 févr. 2010 à 13:57
10 févr. 2010 à 13:57
Je te remercie encore. J'étais là dessus depuis hier midi et je commençais à désespérer! lol Mais je comprends mieux mon erreur maintenant.