[PHP]probleme pour le telechargement

Résolu
Bonjours tout le monde :p

J'ai un petit problème ... j'essaye de faire un système qui permet d'uploader des fichier pour ensuite les mettre en téléchargement sur une autre page. Le système d'upload a l'air de fonctionner correctement (le fichier se retrouve bien sur le ftp avec une bonne taille de fichier). Par contre quand je veut lire le fichier,après un très long chargement, il me propose bien de le télécharger mais me télécharge un fichier "cassé" (j'ai ouvert l'original et le télécharger sur notepad et le fichier télécharger a le même début mais n'a pas du tout la fin ...).

Le téléchargement et l'upload fonctionne parfaitement en local. Et mon hébergeur permet le download et l'upload.

Voici le code pour la lecture

	

<?php
/*	TELECHARGEMENTS.PHP	*/
session_start();



function sel_fichier()
{
	include("includes/identifiants.php");
	mysql_connect($adresse, $nom, $motdepasse);
	mysql_select_db($database);
	mysql_query('set names utf8');
	
	$fichier_en_telechargement_sql = mysql_query('SELECT * FROM telechargements WHERE tel_id='.intval($_GET['file']))or die(mysql_error());
	$fichier_en_telechargement = mysql_fetch_array($fichier_en_telechargement_sql);
	
	mysql_close();
	
			$nom = intval($fichier_en_telechargement['tel_id']) ;
			$ext = stripslashes(htmlspecialchars($fichier_en_telechargement['tel_extension'])) ;
			$taille = stripslashes(htmlspecialchars($fichier_en_telechargement['taille'])) ;
			$chemin = htmlspecialchars($fichier_en_telechargement['tel_chemin']);
			$nom_reel = stripslashes(htmlspecialchars($fichier_en_telechargement['tel_nom_fichier']));
			$type = stripslashes(htmlspecialchars($fichier_en_telechargement['tel_type']));
			
	  header('Content-Type: '.$type);
	  header('Content-Transfer-Encoding: binary'); //Transfert en binaire (fichier)
	  header('Content-Disposition: attachment; filename="'.$nom_reel.'.'.$ext.'"'); //Nom du fichier
	  header('Content-Length: '.$taille); //Taille du fichier
	 
	//Envoi du fichier dont le chemin est passé en paramètre
		$chemin = dirname(__FILE__).'/telechargements/'.$nom;
	  readfile($chemin);
	  
}
function affichage_tout_fichier()
{
	echo '<h1>Tous les téléchargements.</h1>';
	
	if($_SESSION['users_level']==5)
		echo'<a href="Admin_upload.php">Ajouter un fichier à la liste</a>';
	
	$fichiers_sql = mysql_query('SELECT * FROM telechargements ORDER BY tel_nom_fichier')or die(mysql_error());
	$i=0;
	echo'<div class="telechargement">';
		echo'<table class ="tableau_forum ">';
		while($fichiers = mysql_fetch_array($fichiers_sql))
		{
			echo'<tr>';
				echo '<td>-  <a href="telechargements.php?file='.intval($fichiers['tel_id']).'">'.$fichiers['tel_nom_fichier'].'</a></td>';
				echo '<td><a href="telechargements.php?file='.intval($fichiers['tel_id']).'">( Fichier '.$fichiers['tel_extension'].' de '.$fichiers['tel_taille'].' octets)</a></td>';
				$i++;
			echo'</tr>';
		}
		echo'</table>';
		if($i==0)
			echo'Il n\'y a aucun fichier à télécharger<br/><br/><br/>';
		
	echo'</div>';
	if($_SESSION['users_level']==5)
		echo'<a href="Admin_upload.php">Ajouter un fichier à la liste</a>';
	
}
if(isset($_GET['file']))
	sel_fichier();
else
{
include("includes/haut.php");
	affichage_tout_fichier();
include("includes/bas.php");
}
?>


merci d'avance pour votre aide :p

4 réponses

  1. Et avec des fichiers de toute petite taille? (genre un texte contenant juste "hello world")?
    1. Le temp de chargement est toujours aussi long mais le fichier .txt est entier :p
      1. Non sa n'a rien améliorer (j'ai deja essayer :p) mais par contre en rajoutant les headers que je n'avais pas sa marche ... :)

        Discussions similaires

        question pix mot caché

        7 réponses