Page 1 sur 1

Image vide lors du téléchargement

Posté : 09 mars 2012, 22:36
par MEGAFILES
Bonsoir à tous !

J'ai un problème lors du téléchargement d'un fichier de type image

Lors du téléchargement, Windows m'avertir que le format de l'image n'est pas correct alors qu'il est en .png

J'utilise des header pour télécharger

j'accède au téléchargement du fichier via visualdevelopment.fr/?d=89456487

Et l'extension du fichier est enregistré dans la base de données ainsi que le fichier est enregistré dans files/89456487.png dont les fichiers ne sont pas téléchargeables car il est protégé d'un .htaccess

Beaucoup de membres du site se sont plaints ! Pouvez-vous m'aider ?

Re: Image vide lors du téléchargement

Posté : 09 mars 2012, 22:38
par xTG
Sans un brin de code et sans aucune boule de cristal je crains que la réponse soit : non.

Re: Image vide lors du téléchargement

Posté : 09 mars 2012, 23:02
par MEGAFILES
<style>
table { border: 1px solid #C0C0C0; }
</style>
<?php 

$result = dbquery("SELECT * FROM files WHERE repertory = '" . filter($_GET['d']) . "'");

if (mysql_num_rows($result) >= 1)
{
	while ($d = mysql_fetch_assoc($result))
	{
		$file_name = $d['file_name'];
		$description = $d['description'];
		$repertory = $d['repertory'];
		$extension = ClassUpload::GetExtension($file_name);
	}
	
	define('FILE_EXIST', true);
}


else 
{ 
	echo "<div id='error'>Le fichier n'est pr&eacute;sentement pas disponible</div>"; 
	define('FILE_EXIST', false);
}


if (FILE_EXIST)
{
	switch($extension) 
	{
		case ".gz": $type = "application/x-gzip"; break;
		case ".tgz": $type = "application/x-gzip"; break;
		case ".zip": $type = "application/zip"; break;
		case ".pdf": $type = "application/pdf"; break;
		case ".png": $type = "image/png"; break;
		case ".gif": $type = "image/gif"; break;
		case ".jpg": $type = "image/jpeg"; break;
		case ".txt": $type = "text/plain"; break;
		case ".htm": $type = "text/html"; break;
		case ".html": $type = "text/html"; break;
		default: $type = "application/octet-stream"; break;
	}
	
	if (isset($_POST['premium']) && $users->GetUserVar(USER_ID, 'rank') >= 2 || isset($_POST['submit']))
	{
		if (file_exists("files/" . $repertory . $extension))
		{
			header('Content-Disposition: attachment; filename="' . $file_name . '"');			
			header("Content-Type: application/force-download"); 
			header("Content-Transfer-Encoding: " . $type . "\n"); // Surtout ne pas enlever le \n
			header("Content-Length: ". filesize("files/" . $repertory . $extension)); 
			header("Pragma: no-cache"); 
			header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); 
			header("Expires: 0"); 
			flush(); 
			readfile("files/" . $repertory . $extension); 
			exit();
		}
	}

	else if (isset($_POST['premium']) && !$users->GetUserVar(USER_ID, 'rank') >= 2) 
	{ 
		header('Location: premium.php'); 
		exit; 
	}

?>
<form method="post">
<div class="left">
<b>Nom du fichier&nbsp;:</b>&nbsp;<?php echo $file_name . "<br />"; ?>
<b>Description&nbsp;:</b>&nbsp;<?php echo $description . "<br />"; ?>
<b>Taille du Fichier&nbsp;:</b>&nbsp;<?php echo ClassUpload::Convert(filesize("files/" . $repertory . $extension)); ?>
</div>

<div class="right">
<b>Lien de t&eacute;l&eacute;chargement:</b>&nbsp;
<?php echo "<a href='http://www.visualdevelopment.fr/?d=" . $repertory . "'>http://www.visualdevelopment.fr/?d=" . $repertory . "</a>"; ?>
</div>
<div class="clear"></div>
<div class="right">
<div class="contour radius"><input class="radius orange" type='submit' name="premium" value='T&eacute;l&eacute;chargement Premium' /></div>
<div class="contour radius"><input class="radius black" type='submit' name="submit" value='T&eacute;l&eacute;chargement r&eacute;gulier' /></div>
</div>
<? } ?>
<div class="clear"></div>
la page de téléchargement

Le fichier est enregistré sous 8 caractères enregistré sous forme de chiffres et lettres au format du fichier dans files/

Mais est enregistré dans la base de données sans l'extension

Re: Image vide lors du téléchargement

Posté : 10 mars 2012, 10:20
par xTG
T'as du code HTML en tout début de page, cela se mélange aux données du fichier...
Donc image corrompue. ;)