PHP 解決TP3.2批量上傳圖片或檔案時同名問題的辦法

來源:互聯網
上載者:User
本文執行個體為大家分享了如何解決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;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.