begin process at 2012 05 31 02:07:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Server Web

 > 

Apache

 > 

Problème lors du download de fichiers stockés


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème lors du download de fichiers stockés

vendredi 4 février 2011 à 17:21:19 | Problème lors du download de fichiers stockés

beth2611

Bonjour,

je rencontre un soucis, plutot dérangeant. Suite a de multiples tests (traces wireshark, comparaison avant/après...), j'ai pu constater que le fichier contenait 2 octets supplémentaires suite a :

Code PHP :
header("Content-Type: $content_type");
//header("Content-Description: File Transfer");
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($source));
header("Content-Disposition: attachment; filename=$name_file");


readfile($source);


Je voudrais savoir si quelqu'un a déjà rencontré ce problème et s'il a trouvé une solution, ou au moins une voie dans laquelle je pourrai chercher.

Merci par avance
samedi 5 février 2011 à 13:17:54 | Re : Problème lors du download de fichiers stockés

genetApt151

Salut,
chez moi pas de problème, mais c'est quoi que tu appelles 'comparaison avant/après'?

Pour vérifier intégrité des fichiers il faut utiliser un checksum.
Ex:
echo crc32(file_get_contents($source));
echo md5(file_get_contents($source));
lundi 7 février 2011 à 09:32:58 | Re : Problème lors du download de fichiers stockés

beth2611

J'appelle la comparaison avant après, le poids du fichier sur le serveur, et poids du fichier après download. Il y a 2 octets qui se rajoutent.

Linux le remarque, mais n'y prete pas attention. En revanche, si le download se fait depuis un windows, le logiciel de décryptage utilisé refuse de faire son travail, a cause des 2 '%0A' inséré lors du téléchargement.
lundi 7 février 2011 à 11:00:42 | Re : Problème lors du download de fichiers stockés

beth2611

Alors,

avec la fonction crc32 :
- le fichier sur le serveur : 3977771918
- le fichier téléchargé depuis un linux : 3977771918
- le fichier téléchargé depuis un windows : 3565969453

le fichier fait 1 978 494 octets sur le serveur. Sur windows après download, il en fait 1978496.
lundi 7 février 2011 à 11:34:28 | Re : Problème lors du download de fichiers stockés

TychoBrahe

Salut,

a cause des 2 '%0A' inséré lors du téléchargement


Étrange d'avoir deux sauts de ligne en plus, surtout sans retour chariot. Tu es sur que c'est n'est pas un %0D suivi d'un %0A ?

Il y a moyen de voir ton code intégralement stp ?
lundi 7 février 2011 à 13:01:12 | Re : Problème lors du download de fichiers stockés

beth2611

Code PHP :
<?php 
session_start();

$name_file = $_GET['name'];

require 'fonction.php';
include ("variables.inc");	
connexion();

$id = $_GET['id'];
$type_doc = $_GET['type'];

if(strcmp($type_doc, "tkt") == 0){
	$req = mysql_query($requete);
	$db_name = mysql_fetch_row($req);
}else if(strcmp($type_doc, "doc") == 0){
	$req = mysql_query($requete);
	$db_name = mysql_fetch_row($req);
}else if(strcmp($type_doc, "log") == 0){
	$req = mysql_query($requete);
	$db_name = mysql_fetch_row($req);
}else $db_name[0] = $file_log;

$source = str_ireplace("%2F", "/", $db_name[0]);

$content_type = mime_content_type($name_file);
if(!$content_type || strcmp($content_type, "") == 0) $content_type = "application/octet-stream";
header("Content-Type: $content_type");
//header("Content-Description: File Transfer");
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($source));
header("Content-Disposition: attachment; filename=$name_file");


readfile($source);

$conn = $_SESSION['type'];
if(strcmp($type_doc, "doc") == 0 || strcmp($type_doc, "log") == 0 || (strcmp($type_doc, "tkt") == 0 && strcmp($conn, "clt") == 0)){
	$date = date("d/m/Y H:i");
	$id_u = $_SESSION["id_user"];
	$req = mysql_query($requete2);
	while ($res = mysql_fetch_array($req)){
		$nom = decode($res["$Nom"])." ".decode($res["$Prenom"]);
	}
	if(strlen($nom) == 0 && strcmp($type_doc, "log") == 0) $nom = "Customer";
	else if(strlen($nom) == 0 && strcmp($type_doc, "doc") == 0 ) $nom = "Unknown";
	
	if(strcmp($type_doc, "log") == 0) $type = "Versions";
	else $type = "Documents";
	
	$text = "$date;$type;$name_file;$nom\n";
	$descriptor = fopen($file_log, "a+");				
	fwrite($descriptor, "$text");
	fclose($descriptor);
	flush();
}

?>


C'est le code de la page...
vendredi 11 février 2011 à 11:38:54 | Re : Problème lors du download de fichiers stockés

beth2611

Petit complément d'information,

Donc en fait, ce n'est pas un problème d'OS, mais un problème de navigateur.

Je fais habituellement mes tests sur linux, avec Google Chrome.
Je n'ai aucun soucis dans ce cas.

J'ai testé sur un Windows, avec Google Chrome, IE aucun problème.
J'ai essayé avec Firefox, et le problème s'est posé. J'ai alors décidé de tester avec firefox sur linux, et la, exactement la meme erreur que sur windows...

Firefox étant quand meme un navigateur très utilisé, je dois trouver une solution...
Si vous avez des idées, je suis toute ouie
vendredi 11 février 2011 à 12:17:40 | Re : Problème lors du download de fichiers stockés

TychoBrahe

Salut,

Étrange ceci, je n'ai pas le moindre problème chez moi avec firefox. Quelques pistes de recherche :
1. Enlève tout ce qui n'est pas nécessaire afin d'isoler le problème (j'ai du le faire afin que ça fonctionne chez moi vu que je n'ai pas tout ton environnement de travail et ça fonctionne).
2. Nettoie ton code, il y a beaucoup de trucs en double ou mal faits.
3. Test si l'utilisateur à bien fournis toutes les informations.

Sans le readfile() tu ne dois avoir aucune sortie, vérifie bien ça. Le moindre warning ou la moindre notice peux corrompre les données transmises.
vendredi 11 février 2011 à 13:15:54 | Re : Problème lors du download de fichiers stockés

beth2611

Justement, je n'ai aucun warning...

Bon, d'après moi, c'est problème entre le serveur et firefox, parce que j'ai testé en localhost, et... ca passe nickel...
je test différentes propositions trouvées sur le net


Cette discussion est classée dans : problème, fichiers, header, download, content


Répondre à ce message

Sujets en rapport avec ce message

Problème de header("Content-type: image/jpeg") [ par clemthecool ] Salut à tous,j'ai un 'ti soucis au niveau de l'affichage de mes utilisateurs inscrits dans mon annuaire LDAP.Mon annuaire marche correctement et j'arr Redirection apres avoir forcer le download [ par ASPerix ] Bonjour,J'ai une page 'download.php' avec le code:header("Content-disposition: attachment; filename=".$nom_fichier);header("Content-Type: application/ FORCER LE TELECHARGEMENT D UNE VIDEO DISTANTE [ par zzzzzz ] Salut donc j'aimerai forcer le telechargement d'une video distante. C'est a dire que la fenetre Open Save as ect... s'ouvre, et non pas que la video s telechargement multiple [ par mortiis ] Bonjour à tousJe fait un site ou il est possible de télécharger des fichiers.Je le fait par download forcé.Je me demandais s'il étais possible de fair la fonction header() [ par knas74 ] nasj'ai un problème avec la fonction header() lorsque je l'utilise j'ai ce message d'erreur qui s'affiche:Warning: Cannot modify header information - Fichier .htaccess et function header() [ par Bestgamer ] Bon j'ai un problème avec mon fichier .htaccess et la fonction header() de php.code dans mon fichier .htaccess :ErrorDocument 404 http://localhost/por [Problème] Lecture de fichiers dans un certain ordre... [ par Nightm4re ] Bonjour à tous,j'utilise les fonction opendir(), puis readdir() afin de lire les fichiers d'un répertoire. Le problème, c'est que tout est lu dans un download fichiers [ par pcjst ] PcJsTmon site est sur le serveur chez xmes fichiers que les visiteurs peuvent télécharger sont sur le serveur chez YJe veux que lorsque le visiteur va probleme de téléchargement de fichier(PHP) [ par wakla ] Bonjour,J'ai un petit probleme quand je télécharge un fichier?En fait ça marche très bien avec les fichiers pdf. C'est avec les images que ça marche p header + rawurlencode [ par babybutt ] salut tout le mondej'ai un petit problème =(j'ai un fichier pdf qui contient un une quote ' ("d'utilisation.pdf")et dans j'utilise un header pour l'ou


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales