<?php //上傳處理 class Ata_Controller_Action_Helper_Upload extends Zend_Controller_Action_Helper_Abstract { //通知csv檔案 public function MsgCsv(&$source, $succdata, $errdata){ //原cvs保留 //檔案存放目錄 $publicPath = realpath(APPLICATION_PATH."/../public/upload").'/'; $csvPath = "msgcsv/".date('Y').'/'.date('m')."/"; $path = $publicPath.$csvPath; //建立目錄 $this->mkdirs($path); //uniqid() 函數基於以微秒計的目前時間,產生一個唯一的 ID。uniqid() $filename = uniqid(); //擷取檔案的副檔名 $ext = pathinfo($source['name'], PATHINFO_EXTENSION); //建立空檔案,目錄,檔案名稱,擴充 $filepath = $path.$filename.'_org.'.$ext; //move_uploaded_file(),將上傳的檔案移動到新位置 move_uploaded_file($source['tmp_name'], $filepath); //正確csv建立 $content = ''; //建立空檔案,目錄,檔案名稱,擴充 $succfile = $path.$filename.'_succ.'.$ext; //把$succdata的內容寫入$content; foreach($succdata as $row){ //連接字串等同$content = $content.$row."n" $content .= $row."n"; } $content = trim($content,"n"); //file_put_contents(),把一個字串寫入檔案中 file_put_contents($succfile, $content); //錯誤csv建立 $content = ''; $errfile = $path.$filename.'_err.'.$ext; foreach($errdata as $row){ $content .= $row."n"; } $content = trim($content,"n"); file_put_contents($errfile, $content); //返回3個檔案(用於查看失敗列表與把成功的列表內容寫入隱藏欄位中傳遞到資料庫中) return array( 'orginal' => $csvPath.$filename.'_org.'.$ext, 'success' => $csvPath.$filename.'_succ.'.$ext, 'error' => $csvPath.$filename.'_err.'.$ext ); } //刪除檔案 //擷取csv檔案的首碼名 public function rmMsgCsv($path){ //$prefix擷取csv檔案的首碼名 $prefix = str_replace('_succ.csv','',$path); //刪除三個檔案 unlink($prefix.'_org.csv'); unlink($prefix.'_succ.csv'); unlink($prefix.'_err.csv'); } public function mkdirs($dir, $mode = 0777) { return is_dir($dir) or ($this->mkdirs(dirname($dir)) and mkdir($dir, $mode)); } } |