本文主要跟大家分享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,',');
相關推薦:
以上是php3.2實作多檔案上傳的詳細內容。更多資訊請關注PHP中文網其他相關文章!