本文主要和大家分享php3.2實現多檔案上傳的執行個體,希望能協助到大家。
public function upload(){ $upload = new \Think\Upload();// 執行個體化上傳類 $upload->maxSize = 3145728 ;// 設定附件上傳大小 $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設定附件上傳類型 $upload->rootPath = './Uploads/'; // 設定附件上傳根目錄 $upload->savePath = 'slider/'; // 設定附件上傳(子)目錄 // 上傳單個檔案 $info = $upload->uploadOne($_FILES['files']); if(!$info) {// 上傳錯誤提示錯誤資訊 $this->error($upload->getError()); }else{// 上傳成功 擷取上傳檔案資訊 $url= $info['savepath'].$info['savename']; } return $url;}
這個是單檔案上傳的時候源碼,其中的 $info = $upload->uploadOne($_FILES['files']);這個位置限制住了檔案上傳是單檔案
還有就是前端的input選擇的問題
public function upload(){ $upload = new \Think\Upload();// 執行個體化上傳類 $upload->maxSize = 3145728 ;// 設定附件上傳大小 $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設定附件上傳類型 $upload->rootPath = './Uploads/'; // 設定附件上傳根目錄 $upload->savePath = 'last/'; // 設定附件上傳(子)目錄 // 上傳多個檔案 $info = $upload->upload();if(!$info) {// 上傳錯誤提示錯誤資訊 $this->error($upload->getError());}else{// 上傳成功 擷取上傳檔案資訊 foreach($info as $file){ $url .= $file['savepath'].$file['savename'].','; }} return $url;}
這個是多檔案上傳的方法主要的區別在於$info = $upload->upload();這個部位
以及$url .= $file['savepath'].$file['savename'].',';這部分的限制
前端的單檔案,多檔案區別也是很大的
這個是多檔案的區別
<input type="file" name="files[]" multiple="">
官方的解釋
如果需要使用多個檔案上傳,只需要修改表單,把
<input type='file' name='photo'>
改為
<input type='file' name='photo1'><input type='file' name='photo2'><input type='file' name='photo3'>
或者
<input type='file' name='photo[]'><input type='file' name='photo[]'><input type='file' name='photo[]'>
兩種方式的多附件上傳系統的檔案上傳類都可以自動識別。
多檔案上傳的時候
還有一個問題是區分出來1,2,3.。。。n個input
//擷取商品圖片路徑和詳情圖片路徑 $str = $this->upload(); $count1 = count($_FILES['files1']['name']);//擷取商品圖片上傳個數 $arr = explode(',',$str); $slider = ''; $detail = ''; foreach ($arr as $k=>$v){ if($k+1<$count1){ $slider .= $v.','; }else{ $detail .= $v.','; } } $slider = rtrim($slider,','); $detail = rtrim($detail,',');