public function actionViewDownload(){
// some in internal processing php commands (no echo)
exec($command); // command to be executed compulsary
$file = "/images/sample.jpg"; // some images file
if (file_exists($file)) {
header('Content-Description: File Transfer');
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');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
}
$this->render('view',array('data'=>$data)); // render the other view of the controller after/during download.
}
我需要执行一个命令,然后下载图像文件,然后在下载渲染之后或期间下载视图。
如果我在下载之前渲染视图,则会提示“无法修改标头。标头已发送”
,如果我在下载后渲染视图,则视图现在显示在浏览器上,但文件已下载。
我的问题是如何实现三个任务:执行命令(这必须是第一个),渲染和下载。