關於tp3.2.3檔案匯入資料庫(去除重複資料)、寫日誌和下載問題
假設我們有一個student.csv檔案和一個student庫,現在要將student.csv檔案匯入資料庫。
1.關於去掉重複資料匯入資料庫的基本思路
(1)首先我們將student資料庫裡的學號(no)取出來,放在$arrNo數組裡。
(2)然後,我們再將csv檔案的學號(no)取出來,判斷學號(no)是否存在$arrNo陣列。
(3)如果學號在$arrNo陣列中不存在,則將學號(no)追加到$arrNo,然後將記錄存放到$arr陣列。如果存在,則不插入。
2.現在我們有一個上傳檔案的一個頁面: <form action="__URL__/upload" style="text-decoration:center;" enctype="multipart/form-data" method="post"> <input type="file" name="photo" ><br> <input type="submit" value="匯入" style="margin:0 auto;"> <input type="button" value="取消" data-dismiss="modal"> </form> 注意:enctype="multipart/form-data"這個是上傳檔案必寫的一個屬性。 3.然後我們在控制器寫一個上傳的upload方法: public function upload(){ $upload = new \Think\Upload();// 例項化上傳類 $upload->maxSize = 0 ;// 設定附件上傳大小 $upload->exts = array('csv');// 設定附件上傳型別 $upload->rootPath = './Uploads/'; // 設定附件上傳根目錄 $upload->savePath = ''; // 設定附件上傳(子)目錄 $info = $upload->upload();//獲取上傳的資訊 if(!$info) {// 上傳錯誤提示錯誤資訊 $this->error($upload->getError()); }else{// 上傳成功 $this->import($upload->rootPath.$info['file']['savepath'].$info['file']['savename']); } } } 4.在控制器寫一個匯入資料庫的import方法: public function import($file){ $encoding=detect_encoding($file); //如果不是utf8格式,則轉換為utf8 if($encoding != 'UTF-8'){ $contens=file_get_contents($file); $contens=mb_convert_encoding($contens, 'utf-8',$encoding); file_put_contents($file, $contens); } $student=M('student'); $arrNo=$student->getField('no',true); $fp=fopen($file,'r');//以讀的方式開啟 if($fp){ $fields=array('no','name','sex'); $model=M('student'); $arrNo=$model->getField('no',true); // dump($arrNo); $arr=array();//定義一個空陣列 $i=1;//定義行數 while (($row=fgetcsv($fp,1000,","))!==false) { $row=array_combine($fields, $row); // dump($row); if (in_array($row['no'], $arrNo)) {//判斷csv的學號在資料庫中是否存在 $tr.= '第'.$c.'行'.$row['no']."存在\r\n"; }else{ $arrNo[]=$row['no']; $arr[]=$row; $tr.='第'.$c.'行'.$row['no']."匯入成功\r\n"; } if (count($arr)==1000) { $model->addAll($arr); unset($arr); $this->show('匯入成功','student/index'); } $i++; } $data=writelog("myerror",$tr);//呼叫寫日誌方法 if (count($arr)>0) { $model->addAll($arr); $this->success('匯入成功','index'); }else{ $this->error('資料庫已存在'); } } } } 在function.php中寫一個寫日誌函式: function writelog($type="",$content=""){ if(!$content || !$type){ return false; } $dir=getcwd().DIRECTORY_SEPARATOR.'logs'.DIRECTORY_SEPARATOR.$type; if(!is_dir($dir)){ if(!mkdir($dir)){ return false; } } $filename=$dir.DIRECTORY_SEPARATOR.date("Ymd",time()).'.log'; $logs=include $filename; if($logs && !is_array($logs)){ unlink($filename); return false; } $logs=$content; $str=var_export($logs, true).";"; if(
[email protected]($filename,"wb")){ return false; } if(!fwrite($fp, $str))return false; fclose($fp); return true; } 最後我們在控制器寫一個下載的方法: public function xia(){ $file_dir = "./Logs/myerror/"; $file_name = date("Ymd",time()).'.log'; if (!file_exists ($file_dir.$file_name )) { echo "檔案找不到"; exit (); } else { //開啟檔案 $file = fopen ( $file_dir . $file_name, "r" ); //輸入檔案標籤 Header ( "Content-type: application/octet-stream" ); Header ( "Accept-Ranges: bytes" ); Header ( "Accept-Length: " . filesize ( $file_dir . $file_name ) ); Header ( "Content-Disposition: attachment; filename=" . $file_name ); //輸出檔案內容 //讀取檔案內容並直接輸出到瀏覽器 echo fread ( $file, filesize ( $file_dir . $file_name ) ); fclose ( $file ); exit (); } } 然後我們可以在模板檔案中加一個<a href="__URL__/xia">下載</a>,這樣就可以實現下載功能。
相關推薦
關於tp3.2.3檔案匯入資料庫(去除重複資料)、寫日誌和下載問題
假設我們有一個student.csv檔案和一個student庫,現在要將student.csv檔案匯入資料庫。1.關於去掉重複資料匯入資料庫的基本思路 (1)首先我們將student資料庫裡的學號(no)取出來,放在$arrNo數組裡。 (2)然後,
tp3.2.3 PHPExcel 匯入資料庫
最近開發的專案客戶有個Excel匯入的需求 將Excel中的資料匯入資料庫 這也是個比較老套的功能了 不過自己之前一直沒有做過 所以揣摩了半天時間 現在在這分享下 首先就是下載PHPExcel類,將下載好的類放置在專案的Org/Util目錄下 ,當然這個位置不是死的
layui框架檔案上傳 + TP3.2.3 檔案上傳後臺處理(php)
layui框架是1.0.9版本。。首先html頁面程式碼如下: <div class="layui-form-item" id="upload_file">
TP3.2.3檔案上傳
上傳表單 在ThinkPHP中使用上傳功能無需進行特別處理。例如,下面是一個帶有附件上傳的表單提交: <formaction="__URL__/upload"enctype="multipart/form-data"method="post"><input
將Excel檔案匯入資料庫(POI+Excel+MySQL+jsp頁面匯入)第一次優化
本篇文章是根據我的上篇部落格,給出的改進版,由於時間有限,僅做了一個簡單的優化。2018年4月1日,新增下載地址連結:點選開啟原始碼下載地址十分抱歉,這個連結地址沒有在這篇文章上公佈出來。希望不是很晚。上篇文章的是這樣的一個數據流向:瀏覽器端開啟上傳頁面,選擇檔案,上傳,將e
51Nod1010 只包含因子2 3 5的數(打表+ lower_bound)
lower_bound這個函式挺好用的。 #include<iostream> #include<algorithm> #include<cstring> using namespace std; typedef long long ll; c
TensorFlow HOWTO 2.3 支援向量分類(高斯核)
遇到非線性可分的資料集時,我們需要使用核方法,但為了使用核方法,我們需要返回到拉格朗日對偶的推導過程,不能簡單地使用 Hinge 損失。 操作步驟 匯入所需的包。 import tensorflow as tf import numpy as np import matplo
tp3.2.3運用phpexcel將excel檔案匯入mysql資料庫
1,下載PHPExcel 2,配置將下載好的PHPExcel檔案與PHPExcel.php 放到thinkphp 根目錄 include/Library/Org/Util/下面 3,同時將PHPExcel.php 改名為 PHPExcel.class.php 以上是將PHP
python讀json檔案,匯入資料庫(回答https://ask.csdn.net/questions/712969)
1、思路一dataframe入庫 import pandas as pd import numpy as np data=pd.read_json('test.json',orient='values',encoding='utf-8') for indexs in data.i
【PHP】TP3.2.3 IIS伺服器隱藏index.php入口檔案
在TP根目錄新建檔案:web.config 寫入下列程式碼: <?xml version="1.0"?> <configuration> <system.webServer> <rewrite>
POI 匯入匯出Excel檔案到資料庫(轉載)
1.匯入相應的poi jar包,我用的是3.7; 2.匯入Excel檔案到資料的類(這裡我把解析Excel檔案的操作封裝成一個類,在action中只要呼叫該類就可以了): Java程式碼 /** * POI:解析Excel檔案中的資料並把每行資料封裝成一個實體 * @par
SpringMVC 實現POI讀取Excle檔案中資料匯入資料庫(上傳)、匯出資料庫中資料到Excle檔案中(下載)
package com.shiliu.game.utils; import java.io.OutputStream; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import
應用TP3.2.3的一些小問題(一)
好久沒寫部落格了,最近剛到青島這邊找工作,有一大堆的事情,加上第一個專案比較趕,一直也沒什麼時間更新下部落格。難得今天有時間,就把最近用TP3.2碰到的一些問題給總結一些,做個記錄吧。1、tp的<
用goquery從國家統計局拉取最新省市區3級行政區劃程式碼,生成SQL檔案匯入資料庫
想找一份最新的省市區三級聯動的資料,網上的怕不夠新,不夠準確 正好用go從國家統計局官方網站爬一份,生成sql檔案,然後匯入資料庫 資料庫表結構 DROP TABLE IF EXISTS `3goals_area`; CREATE TABLE `3go
TP3.2.3學習(一) | 配置檔案
TP3.2.3學習(一) 配置檔案的操作 1、讀取配置檔案 PHP echo C( 'DB_HOST' ); 2、動態改變配置檔案的值 PHP C('DATA_CACHE_TIME', 60); 3、批量配置配置檔案 PHP $config = array(
46、求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。
closed else while spl 判斷語句 stat 條件 執行 ret 思路:循環或者遞歸都有個結束條件和執行條件。用&&短路與代替。 //短路與&&;就是只有前一個條件滿足才可以去判斷第二個條件。 //遞歸的出口
奪命雷公狗TP3.2.3商城3-----數據庫的創建以及連接
roo tmpl sql .cn mysql 連接 images return root 然後我們來到TP中配置一下數據庫連接 D:\phpStudy\WWW\shop\WEB\Common\Conf: <?php return array(
奪命雷公狗TP3.2.3商城8-----管理員登錄並且保存session
確認密碼 存在 驗證用戶名 error control splay erro cte 行處理 首先我們在D:\phpStudy\WWW\shop\WEB\Admin\Controller 目錄下創建LoginController.class.php,登錄和註銷都是在這個控
奪命雷公狗TP3.2.3商城9-----後臺退出
die spl null fun mage tro .cn extends 3.2 我們直接在Login這個控制器裏寫多一個方法即可完成退出了, <?php namespace Admin\Controller; use Think\Controller; cla
奪命雷公狗TP3.2.3商城11-----後臺頭部和左側導航分離
代碼 使用 phpstudy 效果 ima 導航 header dmi admin 我們來將網站後臺的頭部和左側的導航分離出來: 然後在模版中找到類為:topbar-inner clearfix 的地方: 然後我們在然後在D:\phpStudy\WWW\sho