|
Posted by Adrian on 11/02/06 00:00
Using:
Mysql 5.0.15
php 5.1.6
apache 2.2.3
I am trying to create a download link for various pdfs which I have stored in a
mysql DB.
I am having trouble with the header fields when clicking the link.
Here is the code that sends the pdf called using
<a href="download.php?id=4">Blah</a>
Output is delayed from php.ini (output_buffering = 4096)
What http headers should I be sending.
This works most of the time like this, but in IE6 I get few strange results
sometimes.
1. Clicking on a new page after downloading the pdf - the page is blank unless I
refresh
2. The URL in the address bar does not update even though the page does.
3. If I leave out the Content_Disposition header and set the Content-Type:
application/pdf. The browser just displays the PDF as text.
<?php
include($_SERVER["DOCUMENT_ROOT"] . "/../php/common.inc");
include($_SERVER["DOCUMENT_ROOT"] . "/../php/prepend.php");
$db=new Interlex_DB;
if(isset($_GET["id"]))
{
$query=sprintf("SELECT pdf, filename, length(pdf) AS len FROM broadsheets
WHERE broadsheet_id='%d' AND active=1", $_GET["id"]);
$db->query($query);
if($db->next_record())
{
if(!headers_sent())
{
header("Accept-Ranges: bytes");
header("Content-Transfer-Encoding: Binary");
header("Content-Type: application/force-download");
header(sprintf("Content-Length: %d", $db->f("len")));
header(sprintf("Content-Disposition: inline; filename=\"%s\"",
$db->f(filename)));
echo $db->f("pdf");
//exit;
}
}
}
?>
--
Adrian
Think you know a language? Post to comp.lang... and find out!
Navigation:
[Reply to this message]
|