2016-04-06 8 views
1

バイト配列をREST APIから取得します。次に、このバイト配列からローカルファイルを作成します。そしてZF2でこのファイルをブラウザに送ることができます。バイト配列のZF2ストリーム

ZF2のコントローラのアクションの中からコード:

file_put_contents($fullpath, $rawPdf); 
$headers = new \Zend\Http\Headers(); 
$contentDisposition = ($view == 'inline') ? 'inline': 'attachment'; 
$headers->addHeaders(array(
    'Content-Disposition' => $contentDisposition . '; filename="' . basename($fullpath) . '"', 
    'Content-Type' => 'application/pdf', 
    'Content-Length' => filesize($fullpath), 
    'Expires' => '@0', 
    'Cache-Control' => 'must-revalidate', 
    'Pragma' => 'public' 
)); 
$response = new \Zend\Http\Response\Stream(); 
$response->setStream(fopen($fullpath, 'r')); 
$response->setStreamName(basename($fullpath)); 
$response->setStatusCode(200); 
$response->setHeaders($headers); 
return $response; 

しかし、私は直接ローカルファイルを作成せずにブラウザにバイト配列を送信します。

バイト配列でストリーム($ response-> setStream())を設定するにはどうすればよいですか?ローカルファイルを作成せずにバイト配列でリソースを作成するにはどうすればよいですか?私はそれを行うことができ、昔ながらのPHPで

$rawPdf = ''; 
array_walk($byteArray, function($value) use (&$rawPdf) { 
    $rawPdf .= chr($value); 
}); 
header('Content-type: application/pdf'); 
header('Content-Disposition: inline; filename="Bericht.pdf"'); 
header('Content-Transfer-Encoding: binary'); 
header('Accept-Ranges: bytes'); 
echo $rawPdf; 
+0

を望むものに合うようにそれを適応させることができます。 – peterpeterson

+0

ファイルを 'php:// output'と強制ダウンロードで書くことができます – ceadreak

答えて

1

は、これは私がCSVファイル内のいくつかのデータをエクスポートして、自動的場合はダウンロードして使用したコードの簡単な例です。

あなたは私はあなたが$対応 - >のsetContent($ rawPdf)を行う必要があると思います

header('Content-Type: text/csv'); 
header('Content-Disposition: attachment;filename="csv_file.csv'); 
header('Cache-Control: max-age=0'); 

$file = fopen('php://output', 'w'); 

foreach ($this->getData() as $data) 
{ 
    fputcsv($file, $data); 
} 

fclose($file); 
exit(0); 
関連する問題