By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
448,485 Members | 1,031 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 448,485 IT Pros & Developers. It's quick & easy.

Creating download link for a pdf

P: n/a
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!
Nov 1 '06 #1
Share this Question
Share on Google+
1 Reply


P: n/a
I would set output buffering to just on because 4096 just buffers the
first 4096 bytes; not always what you want. Also, if you're displaying
a PDF, many browsers have built in plugins to handle pdfs. If the users
wants to download it, then they can just use the save function in their
browsers to download the pdf.
Adrian wrote:
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!
Nov 2 '06 #2

This discussion thread is closed

Replies have been disabled for this discussion.