2013-04-08 5 views
0

Я использую php/mysql в своей таблице У меня есть столбец под названием «PDF».PHP/MySQL файл загрузки

Каждая строка имеет путь к 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

вы уверены, что файл '«/ путь/к/файлу /». $ result ["pdf"] 'действительно существует? – barbashov

+0

yep - я повторил его, затем копировал и вставлял в веб-браузер, а загрузка файлов – 2013-04-08 23:19:30

+0

вы пробовали 'header (" Местоположение: http://www.server.com/path/to/file/ ". $ Result [" pdf "]" ");'? – MLeblanc

ответ

1

Хорошо, давайте разобраться. Сначала вы не должны выводить полный путь к файлу в заголовке. Просто используйте это:

header('Content-disposition: attachment; filename='.$result["pdf"]); 

filename в этом заголовке просто говорит браузер имя файла, который он должен использовать, чтобы сохранить файл.

Во-вторых, readfile() не соответствует пути, используемому браузером при вставке URL-адреса. readfile() использует DOCUMENT_ROOT. Для получения дополнительной информации вы можете прочитать этот ответ, например: Document Root PHP

EDIT Ваш код должен выглядеть следующим образом:

$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"]); 
+0

aha right ok - поэтому я использую заголовок («Location :. .. или что-то еще? – 2013-04-08 23:27:55

+0

@charliejsford есть два разных подхода к вашей задаче. В вашем случае вы можете использовать 'header (" Location ... '. – barbashov

+0

@charliejsford и посмотреть мое редактирование для' readfile() 'подхода. – barbashov

Смежные вопросы