0

テーブルで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"]."");

しかし、まだ運がありません - 私にできることはありますか?

4

1 に答える 1

1

よし、整理しよう。最初は、ヘッダーにファイルへのフル パスを出力しないでください。これを使用するだけです:

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

filenameそのヘッダーでは、ファイルを保存するために使用するファイル名をブラウザに伝えるだけです。

次に、readfile()URL を貼り付けるときにブラウザが使用するパスをたどりません。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"]);
于 2013-04-08T23:24:05.820 に答える