webForumDet fria alternativet

Problem med att visa en pdf-fil

PHPur PHP

2 svar · 364 visningar · startad av skyman

skymanMedlem sedan juli 20012 450 inlägg
#1

Hej!

Jag vill kunna visa pdf:er tex och andra filer som jag har på min server.
Jag vill inte skriva:

<a href=www.minsida.se/filer/fil.pdf>Filen</a>

Utan jag vill att länken skall se ut så här:

<a href=www.minsida.se/fil.php?id=1>Filen</a>

Jag har försökt att lyckas få fram den genom detta script:

$sql="select * from jsr_downloads where id=".$id;
	$result=mysql_query($sql);
	$row = mysql_fetch_array($result, MYSQL_ASSOC);
    header("Content-type: ".$row['type'].""); 
    //header("Content-type: application/force-download"); 
    header("Content-Disposition: attachment; filename=\"" . $row['filename'] . "\""); 
    header("Content-transfer-encoding: binary\n"); 
    header("Content-length: " . filesize("downloads/new/" . $row['filename']) . "\n"); 
    $fp = fopen("downloads/new/" . $row['filename'], "r"); 
    fpassthru($fp);

Hitta lite kod här: http://www.webforum.nu/showthread.php?t=117495

Vad gör jag för fel? Det visas bara massa tecken, så filen hämtas men det visas på ett felaktigt sätt...
Help! x( ;)

skymanMedlem sedan juli 20012 450 inlägg
#2

Jag vet inte hur... men nu så funkar det...
Koden:

function download($id){
	global $tpl;
	$sql="select * from jsr_downloads where id=".$id;
	$result=mysql_query($sql);
	$row = mysql_fetch_array($result, MYSQL_ASSOC);
    header("Content-type: ".$row['type'].""); 
    header("Content-type: application/force-download"); 
    header("Content-Disposition: attachment; filename=\"" . $row['filename'] . "\""); 
    header("Content-transfer-encoding: binary\n"); 
    header("Content-length: " . filesize("downloads/new/" . $row['filename']) . "\n"); 
    $fp = fopen("downloads/new/" . $row['filename'], "r"); 
    fpassthru($fp); 
	exit;
}
nitro2k01Medlem sedan aug. 20039 342 inlägg
#3

Kolla med t ex PHPMyAdmin att datan i databasen är korrekta. MIME-typen ($row['type') ska vara application/pdf för pdf och filnamnet ($row['filename']) ska bara innehålla namnet och inte hela sökvägen.
Om detta ligger på en publik server kan du skicka adressen i ett PM, så kan jag analysera hur http-huvudet ser ut.

133 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)