アプリケーションフォルダにTest.xlsxファイルを作成 しましたが、実際にはユーザーにダウンロードするオプションを提供したいと思います。しかし、クライアント側に転送される一時的なExcelファイル
を生成したいのですが、その後、ファイルは破棄されます。また、実行時に生成されたTest.xlsxファイルを転送するのに疲れましたが、ファイルのアクセス許可のために転送できません。つまり、Test.xlsxファイルは読み取りモード専用です。
これを達成するための最良の方法は何でしょうか?これが私がこれまでに書いた数行のコードです。
// code for excel generation from sqlDataProvider.
$factory = new CWidgetFactory();
Yii::import('ext.eexcelview.EExcelView',true);
$widget = $factory->createWidget($this,'EExcelView', array(
'dataProvider'=>$dataprovider,
'grid_mode'=>'export',
'title'=>'Title',
'creator'=>'TNC',
'autoWidth'=>true,
'filename'=>'Test.xlsx',
'stream'=>false,
'disablePaging'=>false,
'exportType'=>'Excel2007',
'columns'=>array(
'First_Name',
'Middle_Name',
'Last_Name',
'showTableOnEmpty' => false,
));
$widget->init();
$widget->run();
そしてダウンロードのために:
$filename = "Test.xlsx";
//@chmod($filename1,0777 );
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename='.basename($filename));
header('Content-type: application/vnd.ms-excel', true);
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($_SERVER['DOCUMENT_ROOT'].$filename));
readfile(Yii::app()->params['secureBaseUrl'].$filename);
私が言ったように、このコードセグメントは新しく生成されたファイルのファイルパーミッションのために機能していません。