我已经在应用程序文件夹中创建了 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);
正如我所说,由于新生成文件的文件权限,此代码段无法正常工作。