国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > PHP > 正文

php上傳cvs文件完整例子

2024-09-04 11:44:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

下面給大家整理了個(gè)php上傳cvs文件完整例子,希望此例子對(duì)各位同學(xué)會(huì)有所幫助自己沒注意看不知道什么原因要上傳csv文件.

html代碼:

  1. <form action="/message/index/csv" encType="multipart/form-data" method="post" target="uploadcvs"
  2. <div><input type="file" name="csvfile"/> &nbsp;<input type="submit" value="上傳"></div> 
  3. <div id="upload_info" style="width:100%;border:1px solid #809db9;display:none" ></div> 
  4. </form> 

target="uploadcvs",添加target時(shí)調(diào)試代碼不好調(diào)試,建議調(diào)試時(shí)去掉這行代碼.

php代碼:

  1. public function csvAction(){ 
  2.     //獲取上傳文件名$fileinfo,包含文件的擴(kuò)展 
  3.     $fileinfo = pathinfo($_FILES['csvfile']['name']);  
  4.     //判斷文件擴(kuò)展是不是csv  
  5.     if(!in_array(strtolower($fileinfo['extension']),array('csv'))){ 
  6.         $feed = array('status'=>'ext'); 
  7.     //判斷文件的大小 
  8.     }else if($_FILES['csvfile']['size'] > 1*1024*1024){ 
  9.         $feed = array('status'=>'size'); 
  10.     }else
  11.         //成功時(shí)數(shù)組 
  12.         $succdata = array(); 
  13.         //錯(cuò)誤時(shí)數(shù)組 
  14.         $errdata = array(); 
  15.         //計(jì)數(shù),計(jì)算多少行 
  16.         $count = 0; 
  17.         //打開臨時(shí)文件,只讀形式 
  18.         $handle = fopen($_FILES['csvfile']['tmp_name'],"r"); 
  19.  
  20.         //獲取數(shù)據(jù)庫(kù)中的username信息    
  21.         $userMongo = new Application_Model_DbTable_MongoUsers(); 
  22.         $dbUsers = $userMongo->findAll(array(),array('login.username'=>true)); 
  23.         //把用戶的username信息寫入$users 
  24.         $users = array(); 
  25.         foreach($dbUsers as $user){ 
  26.             if(isset($user['login']['username'])) 
  27.                 $users[] = $user['login']['username']; 
  28.         } 
  29.         //逐行讀取csv文件信息fgetcsv,fgetcsv($handle) 
  30.         while ($row = fgetcsv($handle)) { 
  31.             //讀一行count就累加,這樣就可以知道讀了多少行 
  32.             $count ++ ; 
  33.             foreach($users as $user){ 
  34.                 //判斷$row[0]是不是手機(jī)號(hào)&&$row[0]是不是等于$user也就是$users中是否有這條記錄 
  35.                 //判斷成功時(shí),把這條手機(jī)號(hào)寫入數(shù)組$succdata 
  36.                 if(preg_match('/^1(3|4|5|8)d{9}$/',$row[0]) && $user==$row[0]){ 
  37.                     $succdata[$row[0]] = (string)$row[0]; 
  38.                     break;                      
  39.                 } 
  40.             } 
  41.             //判斷$succdata[$row[0]]是否存在,不存在寫入$errdata 
  42.             if(!isset($succdata[$row[0]])){ 
  43.                 $errdata[$row[0]] = $row[0]; 
  44.             } 
  45.         } 
  46.         //關(guān)閉文件 
  47.         fclose($handle); 
  48.         //把上傳的cvs文件存到自己的項(xiàng)目中 
  49.         $url = $this->_helper->Upload->msgcsv($_FILES['csvfile'], $succdata$errdata); 
  50.         //$count信息是關(guān)于csv文件有多少行記錄,成功多少行,失敗多少行 
  51.         $count = array('original'=>$count'success'=>count($succdata), 'error'=>count($errdata)); 
  52.         //$feed,這里狀態(tài)是成功的,count, 與 url 。 
  53.         //count是為了查看是否有失敗的,url是為了查看失敗的列表信息(因?yàn)樯蟼鲿r(shí)換回了3個(gè)文件,查看失敗文件)  
  54.         $feed = array('status'=>'succ','count'=>$count'url'=>$url);     
  55.     } 
  56.         //把數(shù)組json化 json_encode() json_encode()json編碼 
  57.         $feed = json_encode($feed); 
  58.         //callback()函數(shù) <script>parent.callback(".$feed.")</script> 
  59.         echo "<script>parent.callback(".$feed.")</script>"
  60.         exit
  61.  } 

js代碼如下:

  1. //data就是".$feed." 
  2. function callback(data){     
  3.     try{ 
  4.      if(data.status =='ext'){ 
  5.          alert('文件類型不正確'); 
  6.          return false; 
  7.      }else if(data.status == 'size'){ 
  8.          alert('文件不能超過1M'); 
  9.          return false; 
  10.      }else if(data.status == 'succ'){ 
  11.          //parseInt將字符串轉(zhuǎn)化為整型 parseInt 
  12.          var html = parseInt(data.count.error) > 0 ? ' <a href="<?php echo UPLOAD_IMAGE_PATH;?>'+data.url.error+'">查看失敗列表</a>' : ''
  13.          //成功的條數(shù),失敗的條數(shù) 
  14.          $('#upload_info').html('成功導(dǎo)入:'+data.count.success+';失敗:'+data.count.error+html); 
  15.          $('#upload_info').show(); 
  16.       $('input[name=step3_hidden]').val(data.url.success); 
  17.          }        
  18.     }catch(e){      
  19.         alert('解析出錯(cuò),請(qǐng)檢查文件格式.'); 
  20.     } 
  21.     return false; 

Upload.php文件代碼如下:

  1. <?php 
  2. //上傳處理 
  3. class Ata_Controller_Action_Helper_Upload extends Zend_Controller_Action_Helper_Abstract { 
  4.  
  5.     //通知csv文件 
  6.     public function MsgCsv(&$source$succdata$errdata){ 
  7.  
  8.         //原cvs保留 
  9.         //文件存放目錄 
  10.         $publicPath = realpath(APPLICATION_PATH."/../public/upload").'/'
  11.         $csvPath = "msgcsv/".date('Y').'/'.date('m')."/"
  12.         $path = $publicPath.$csvPath
  13.         //創(chuàng)建目錄 
  14.         $this->mkdirs($path); 
  15.         //uniqid() 函數(shù)基于以微秒計(jì)的當(dāng)前時(shí)間,生成一個(gè)唯一的 ID。uniqid() 
  16.         $filename = uniqid(); 
  17.         //獲取文件的擴(kuò)展名 
  18.         $ext = pathinfo($source['name'], PATHINFO_EXTENSION); 
  19.         //創(chuàng)建空文件,目錄,文件名,擴(kuò)展 
  20.         $filepath = $path.$filename.'_org.'.$ext
  21.         //move_uploaded_file(),將上傳的文件移動(dòng)到新位置 
  22.         move_uploaded_file($source['tmp_name'], $filepath); 
  23.  
  24.         //正確csv創(chuàng)建 
  25.         $content = ''
  26.         //創(chuàng)建空文件,目錄,文件名,擴(kuò)展 
  27.         $succfile = $path.$filename.'_succ.'.$ext
  28.         //把$succdata的內(nèi)容寫入$content; 
  29.         foreach($succdata as $row){ 
  30.             //連接字符串等同$content = $content.$row."n" 
  31.             $content .= $row."n"
  32.         } 
  33.         $content = trim($content,"n"); 
  34.         //file_put_contents(),把一個(gè)字符串寫入文件中 
  35.         file_put_contents($succfile$content); 
  36.  
  37.         //錯(cuò)誤csv創(chuàng)建 
  38.         $content = ''
  39.         $errfile = $path.$filename.'_err.'.$ext
  40.         foreach($errdata as $row){ 
  41.             $content .= $row."n"
  42.         } 
  43.         $content = trim($content,"n"); 
  44.         file_put_contents($errfile$content); 
  45.  
  46.         //返回3個(gè)文件(用于查看失敗列表與把成功的列表內(nèi)容寫入隱藏域中傳遞到數(shù)據(jù)庫(kù)中) 
  47.         return array
  48.             'orginal' => $csvPath.$filename.'_org.'.$ext
  49.             'success' => $csvPath.$filename.'_succ.'.$ext
  50.             'error' => $csvPath.$filename.'_err.'.$ext 
  51.         ); 
  52.     } 
  53.     //刪除文件 
  54.     //獲取csv文件的前綴名 
  55.     public function rmMsgCsv($path){ 
  56.         //$prefix獲取csv文件的前綴名 
  57.         $prefix = str_replace('_succ.csv','',$path);  
  58.         //刪除三個(gè)文件       
  59.         unlink($prefix.'_org.csv'); 
  60.         unlink($prefix.'_succ.csv'); 
  61.         unlink($prefix.'_err.csv'); 
  62.     } 
  63.  
  64.     public function mkdirs($dir$mode = 0777)  { 
  65.         return is_dir($diror ($this->mkdirs(dirname($dir)) and mkdir($dir$mode)); 
  66.     } 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 闵行区| 永善县| 佛冈县| 灯塔市| 宜州市| 台中县| 开阳县| 湟源县| 来宾市| 彰武县| 水富县| 惠安县| 高碑店市| 二手房| 乌兰察布市| 盐山县| 七台河市| 赣州市| 成武县| 卓尼县| 应用必备| 荔浦县| 许昌市| 灵川县| 湘乡市| 邛崃市| 北京市| 安顺市| 大姚县| 邯郸市| 乐陵市| 颍上县| 肥西县| 维西| 大厂| 东安县| 枣庄市| 县级市| 科尔| 绵竹市| 田阳县|