0

PDF のダウンロードを強制する PHP コードがあります。Mac では動作しますが、Windows マシンでは動作しません。おそらく、Linuxサーバーがコードを読み取り、Macでは読み取れるがWindowsでは読み取れないファイルを作成することに関係していると思いますか?

$filename = str_replace(' ', '%20', $_GET['brochure']);
header('Cache-Control: public');
header('Content-type: application/pdf');
header("Content-disposition: attachment; filename=\"$filename\"");
readfile('http://siteurl.com/media/download/'.$filename);
die();

この PDF ダウンロードを Windows フレンドリーにする方法について何か提案はありますか?

エラーメッセージは

サポートされているファイル タイプではないか、ファイルが破損しているため (たとえば、電子メールの添付ファイルとして送信され、正しくデコードされなかったなど)、'filename..' を開けませんでした。

4

2 に答える 2

1

ブラウザが古いバージョンのファイルをキャッシュしている可能性があります。これらのヘッダーをコードに追加してみてください。

header("Cache-Control:  maxage=1");
header("Pragma: public");

別のオプション:

ファイルを一時ディレクトリに保存し、次のコードを使用してクライアントに送信します。

$file = readfile('/tmp/'.$filename);
header('Content-Description: File Transfer');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
于 2012-05-21T09:47:18.217 に答える
0

Windows が正しく解釈できるように、ファイル名の末尾に .pdf が必要な場合があります。最後に .pdf で名前を変更してファイルをダウンロードしてから、開いてみてください。

于 2012-05-21T09:57:53.250 に答える