PHP / MySQL下载文件

时间:2013-04-08 23:17:01

标签: php mysql

我在我的表中使用php / mysql我有一个名为'PDF'的列。

每行都有一条指向我的Web服务器上PDF文件的路径,我正在使用这个PHP代码:

$sql="SELECT * from table1 where customer_sequence = '53' and invoice_number = '1234' and sequence = '7839' ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
$result=mysql_fetch_Array($rs);

header('Content-disposition: attachment; filename=/path/to/file/'.$result["pdf"].'');
header('Content-type: application/pdf');
readfile('/path/to/file/'.$result["pdf"].'');

SQL正常运行,但一旦尝试下载它没有做任何事情。

我也尝试过:

header("Location: /path/to/file/".$result["pdf"]."");

但仍然没有运气 - 任何想法我能做什么?

1 个答案:

答案 0 :(得分:1)

好的,让我们整理一下。 首先,您不应该在标题中输出文件的完整路径。只需使用:

header('Content-disposition: attachment; filename='.$result["pdf"]);
该标题中的

filename只是告诉浏览器一个文件名,它应该用来保存文件。

其次,readfile()不遵循浏览器在粘贴网址时使用的路径。 readfile()使用DOCUMENT_ROOT。有关详细信息,请阅读此答案,例如:Document Root PHP

修改 您的代码应如下所示:

$sql="SELECT * from table1 where customer_sequence = '53' and invoice_number = '1234'     and sequence = '7839' ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
$result=mysql_fetch_Array($rs);

header('Content-disposition: attachment; filename='.$result["pdf"]);
header('Content-type: application/pdf');
readfile($_SERVER['DOCUMENT_ROOT'] . '/path/to/file/'.$result["pdf"]);