2010-07-24 18 views
0

J'utilise ce script PHP pour télécharger un fichier:force PHP Télécharger le fichier corrompu

$status=stripos($_SERVER['HTTP_REFERER'],'servername'); 
if($status===false) 
{ 
    header('Location:http://xyz.com); 
} 
else 
{ 
    header('Content-disposition: attachment; filename=XXX.pdf'); 
    header('Content-type: application/pdf'); 
    readfile('http://www.xyz.com/Downloads/XXX.pdf); 
} 

Cependant quand je télécharge le fichier dans un navigateur, il dit qu'il est corrompu.

Aidez-nous!

+0

Thanx for the information. Cependant, mes paramètres readfile ont le chemin complet du fichier car il est dynamique et je passe le chemin du fichier à l'exécution au fichier php et le passe comme une chaîne de requête. header ("Content-disposition: pièce jointe; filename = $ _ GET [disp]"); header ("Content-type: $ _GET [type]"); readfile ("$ _ GET [fichier]"); où $ _GET [disp] = XXX.pdf $ _GET [type] = application/pdf $ _GET [fichier] = 'http: // www.xyz.com/Downloads/XXX.pdf' dans ce cas, le nom du fichier peut changer à l'exécution à un xyz.jpg dans ce cas $ _GET [type] serait passé en image/jpeg. –

Répondre

0

Mais ce code fonctionne bien

header("Content-type: application/pdf"); 
header('Content-Disposition: attachment; filename="sample.pdf"'); 
readfile('/var/www/sample.pdf'); 

changer S'il vous plaît filename = XXX.pdf à filename = "XXX.pdf" et vérifier.

Oh désolé !! Vous devez fournir un chemin de base ou pat par rapport au contenu signifie qu'il devrait être comme readfile('/var/www/Downloads/XXX.pdf); plutôt readfile('http://www.xyz.com/Downloads/XXX.pdf);

Merci

+0

Merci pour l'information. Cependant, mes paramètres readfile ont le chemin complet du fichier car il est dynamique et je passe le chemin du fichier à l'exécution au fichier php et le passe comme une chaîne de requête. header ("Content-disposition: pièce jointe; filename = $ _ GET [disp]"); header ("Content-type: $ _GET [type]"); readfile ("$ _ GET [fichier]"); où $ _GET [disp] = XXX.pdf $ _GET [type] = application/pdf $ _GET [fichier] = 'http: // www.xyz.com/Downloads/XXX.pdf' dans ce cas, le nom du fichier peut changer à l'exécution à un xyz.jpg dans ce cas $ _GET [type] serait passé en image/jpeg. Commentez s'il vous plaît. –

0

J'ai trouvé une solution que je voudrais partager, Dans mon code C# [sur cliquant sur le bouton de téléchargement] -

Response.Redirect("http://myserver.com/download.php?file=DownloadItem/" + fileName + "&type=" + Common.MimeType(fileName) + "&disp=" + fileName + "");  

Dans mon fichier PHP [http://myserver.com/download.php]

$status=stripos($_SERVER['HTTP_REFERER'],'myserver.com');<br> 
if($status===false) 
{ 
header('Location:http://myserver.com/ErrorPage');<br> 
} 
else 
{ 
header("Content-disposition:attachment;filename= $_GET[disp]"); 
header("Content-type: $_GET[type]"); 
readfile("$_GET[file]"); 
}