-
- $file = 'a.pdf';
-
- if (file_exists($file)) {
- header('Content-Description: ファイル転送');
- header('Content-Type : application/octet-stream');
- header('Content-Disposition:attachment; filename='.basename($file));
- header('Content-Transfer-Encoding: binary');
- header('Expires: 0');
- header('Cache-Control:must-revalidate、post-check=0、pre-check=0');
- header('Pragma: public');
- b_clean();
- flash();
- readfile($file);
- exit;
- }
- ?>
コードをコピー
2. 生成されたファイルを出力します (例: csv pdf など)。
場合によっては、システムは生成されたファイルを出力します。主に csv、pdf を生成するか、または zip 形式でダウンロードするために複数のファイルをパッケージ化します。この部分については、いくつかの実装方法は、生成されたファイルをファイルに出力し、ファイルを通じてダウンロードすることです。最後にファイルを生成するには、php://output を通じて生成されたファイルを直接出力します。以下では例として csv 出力を使用します。
-
- header('Content-Description: ファイル転送');
- header('Content-Type: application/octet-stream');
- header('Content-Disposition: 添付ファイル; ファイル名=a.csv');
- header('Content-Transfer-Encoding: binary');
- header('Expires: 0');
- header('Cache-Control: must-revalidate、post-check=0、pre -check=0');
- header('Pragma: public');
- ob_clean();
- flash();
- $rowarr=array(array('1','2','3'),array( '1','2','3'));
- $fp=fopen('php://output', 'w');
- foreach($rowarr as $row){
- fputcsv($fp, $ row);
- }
- fclose($fp);
- exit;
- ?>
コードをコピー
3. 生成されたファイルの内容を取得し、処理して出力します。
生成されたファイルのコンテンツを取得するには、通常、最初にファイルを生成し、次にそれを読み取り、最後にそれを削除します。実際には、以下では引き続き csv を使用します。例。
-
- header('Content-Description: ファイル転送');
- header('Content-Type: application/octet-stream');
- header('Content-Disposition: 添付ファイル; ファイル名=a.csv');
- header('Content-Transfer-Encoding: binary');
- header('Expires: 0');
- header('Cache-Control: must-revalidate、post-check=0、pre -check=0');
- header('Pragma: public');
- ob_clean();
- flash();
- $rowarr=array(array('1','2','中国語'),array( '1','2','3'));
- $fp=fopen('php://temp', 'r+');
- foreach($rowarr as $row){
- fputcsv($fp, $ row);
- }
- rewind($fp);
- $filecontent=stream_get_contents($fp);
- fclose($fp);
- // $filecontent コンテンツを処理します
- $filecontent=iconv('UTF-8','GBK ',$filecontent);
- echo $filecontent; //Output
- exit;
- ?>
コードをコピー
php の入出力ストリーム関数は、うまく使えばコーディングを簡素化できます。効率の向上に重点を置くことをお勧めします。
|