本文實例為大家分享了TP3.2批量上傳文件或圖片的具體代碼,并解決了同名沖突問題,供大家參考,具體內容如下
1、html
<form action="{:U('Upload/index')}" enctype="multipart/form-data" method="post" > <p><input type="file" id="file3" name="ID[]" /></p> <p><input type="file" id="file4" name="ID[]" /></p> <input type="submit" value="上傳" /> <p><img id="img1" alt="" src="/Public/IMAGE/empty_thumb.gif" /></p> </form>
2、php
public function index(){ if(!empty($_FILES)){ $upload = new \Think\Upload();// 實例化上傳類 $upload->maxSize = 3145728; $upload->rootPath = './Uploads/'; $upload->savePath = 'image/'; //$upload->saveName = date('YmdHis').'-'.randomkeys(3);//msectime(),毫秒數13位 $upload->saveName = 'msectime'; //自定義函數,采用13位毫秒和3位隨機數 $upload->exts = array('jpg', 'gif', 'png', 'jpeg'); $upload->autoSub = true; $upload->subName = array('date','Ymd'); /* 判斷$_FILES[$key]是否:一維數組,單張圖片上傳 -xzz0703 * 原理:html的input type = "file" name="IDcard"和name="IDcard[]"的區別: * $_FILES前者到后臺php是二維數組,后者是三維數組 */ foreach($_FILES as $key=>$value){ if(count($_FILES[$key]) == count($_FILES[$key],1)){ $info = $upload->uploadOne($_FILES[$key]); if($info){ echo json_encode(array('code'=>200,'id'=>$img_id,'name'=>$img_name));exit; }else{ echo json_encode(array('code'=>0,'msg'=>$upload->getError()));exit; } } } if(count($_FILES)){ $info = $upload->upload();//如果是二維數組,使用批量上傳文件的方法 if(!$info){ $this->error($upload->getError()); exit; } $img_url = '/Uploads/'.$info[0]['savepath'].$info[0]['savename']; $res = array('imgPath1'=>$img_url,code=>$img_url,'msg'=>$info); echo json_encode($res); } } }
3、核心:很多朋友在使用TP3.2框架的時候,在saveName屬性上面被卡住了,原因就是上傳服務器處理級別的百萬微秒,很快。
解決:saveName = 13位的毫秒+3位隨機數,完美解決,具體代碼:
//返回當前的毫秒時間戳和隨機數合并的字符串 function msectime() { list($msec, $sec) = explode(' ', microtime()); $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000).randomkeys(3); return $msectime; }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。
【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。