我在我的表中使用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"]."");
但仍然没有运气 - 任何想法我能做什么?
答案 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"]);