完善了文件输出类,修改了csv格式和乱码的问题

This commit is contained in:
Li Jianxuan 2013-08-19 08:17:50 +00:00
parent 5848e2206d
commit e4ef7119fb
2 changed files with 19 additions and 19 deletions

View File

@ -1,6 +1,7 @@
<?php
use Helper\View as view;
use Files\Files;
use Files\Output;
use Files\Listener\FileListener;
class Admin_DownController extends Zend_Controller_Action
@ -753,27 +754,13 @@ class Admin_DownController extends Zend_Controller_Action
$this->_helper->viewRenderer->setNoRender();
$sql="select * from offlineapp where ts_approved is not null and pdflink is not null order by ts_created desc";
$rows=$this->db->fetchAll($sql);
foreach($rows as $row){
$content.='"'.$row['username'].'","'.$row['unit'].'","'.$row['phone'].'","'.$row['address'].'","'.$row['postcoe'].'","'.str_replace("\"","'",$row['project']).'","'.str_replace("\"","'",$row['datalist']).'","'.$row['email'].'",'.$row['ts_created']."\n";
$content.='"'.$row['username'].'","'.$row['unit'].'","'.$row['phone'].'","'.$row['address'].'","'.$row['postcode'].'","'.str_replace("\"","'",$row['project']).'","'.str_replace("\"","'",$row['datalist']).'","'.$row['email'].'",'.$row['ts_created']."\r\n";
}
include_once("Output.php");
$output = new Output($this->db);
$output->Download("offlineapp.csv",$rows,"csv");
return true;
$this->getResponse()->setHeader('Content-Type', 'application/octet-stream')
->setHeader('Content-Disposition','attachment; filename="offlineapp.csv"')
->setHeader('Content-Length', strlen($content))
->setHeader('Content-Type','application/force-download')
->setHeader('Content-Type','application/download')
->setHeader('Content-Description','File Transfer')
->setHeader('Content-Transfer-Encoding','binary')
->setHeader('Expires',0)
->setHeader('Cache-Control','must-revalidate, post-check=0, pre-check=0')
->setHeader('Pragma','public')
->setBody($content);
$output->Download("offlineapp.csv",$content,"string");
} //下载离线服务记录
else if ($update) {

View File

@ -27,6 +27,7 @@ class Output
"json"=>"JsonOutPut",
"xml"=>"XMLOutPut",
"csv"=>"CSVOutPut",
"string"=>"StringOutPut",
);
$file_type_functions = array();
@ -64,6 +65,16 @@ class Output
}//JsonOutPut()
public function StringOutPut($content){
if(strpos($_SERVER["HTTP_USER_AGENT"],"Windows"))
{
$head = "\xEF\xBB\xBF";
}else{
$head = "";
}
return $head.$content;
}
//输出CSV内容
public function CSVOutPut($data,$head = ""){
@ -90,10 +101,12 @@ class Output
foreach($v as $kk=>$vv)
{
if(strpos($vv,","))
if(strpos($vv,"\""))
{
$v[$kk] = "\"".$vv."\"";
$vv = preg_replace("/\"/",'""',$vv);
}
$v[$kk] = "\"".$vv."\"";
}
$content .= join($split,$v)."\r\n";