Thinkphp中的多文件上传
FileAction.class.php
<?php
class FileAction extends Action {
    public function Index()
    {
        //print_r(__URL__);
        $file = M('file');
        $list = $file->select();
        $this->assign('filelist',$list);
        $this->display();
    }
    public function upload()
    {
        //文件上传的地址上传给它,并且上传完成后返回一个信息,让其写入数据库
        //如果$_FILES为空的画,我就让action给出一个错误提示,告诉用户必须选择上传文件。如果有上传文件,则调用up方法
        //$_FILES = $this->_post('file');
        //print_r($_FILES);
        if (empty($_FILES)) {
            $this->error('必须选择上传文件');
        }else {
            $a = $this->Up();
            //print_r($a);
            if (isset($a)) {
                //写入数据库方法
                if($this->c($a)) {
                    $this->success('上传成功');
                }else {
                    $this->error('写入数据库失败');
                }
            }else {
                $this->error('上传文件有异常请与系统管理员联系');
            }
        }
    }
    private function c($data)thinkphp3
    {
        //print_r($data);
        $file=M('file');
        $num  =  '0';
        for($i = 0; $i < count($data)-1; $i++) {
              $data['filename']=$data[$i]['savename'];     
              if( $file->data($data)->add())
              {
                $num++;
              }
        }
        if($num==count($data)-1)
        {
          return true; 
        }else {
          return false;
        }
      }
    // private function c($data)
    // {   
    //    $file = M('file');
    //    $data['filename'] = $data[0]['savename'];
    //    if ($file->data($data)->add()) {
    //        return true;
    //    }else {
    //        return false;
    //    }
       
    // }
    //在这个方法当中,完成与thinkphp相关的,文件上传类的调用
    private function Up()
    {
        //echo '模拟上传';
        //基本上传功能
        //批量上传功能
        //生成图片缩略图
        //自定义参数上传
        //上传检测(大小,后缀,mime类型)
        //支持覆盖方式上传
        //上传类型,附件大小,上传路径定义
        //支持hash或者日期子目录保存上传文件
        //上传图片的安全性检测
        //对上传文件的hash检测
        //上传文件名自定义规范
        import('@.ORG.UploadFile');
        import('@.ORG.Image');
        $upload = new UploadFile();
        $upload->maxSize = '1000000'; //指上传文件大小,默认为-1,不限制大小(bytes)
        $upload->savePath = './Public/'; //上传保存到什么地方?路径建议保存到入口文件平级或平级目录的子目录
        $upload->saveRule = 'uniqid'; //上传文件的文件名保存规则 time uniqid(默认) com_cr
eate_guid
        $upload->hashType = 'md5_file';
        $upload->autoCheck = true; //是否自动检测附件 默认true
        $upload->uploadReplace = true; //如果存在同名文件是否进行覆盖
        $upload->allowExts = array('jpg','jpeg','png','gif'); //允许上传的文件后缀
        $upload->allowPath = array('image/png','image/jpg','image/pjpeg','image/gif','image/jpeg'); //检测mime类型
        $upload->thumb = true; // 是否开启图片文件缩略
        $upload->thumbMaxWidth = '300,500';//缩略图最大宽度
        $upload->thumbMaxHeight = '200,400';//最大高度
        $upload->thumbPrefix = 's-,m-';//缩略图文件前缀
        //$upload->thumbSuffix = '_s,_m';//文件后缀
        //$upload->thumbPath = '';//如果留空直接上传至
        //$upload->thumbFile 在数据库中也存一个文件名即可
        $upload->thumbRemoveOrigin = 1; //如果生成缩略图,是否删除原图
        //$upload->autoSub 是否使用子目录进行保存上传文件
        //$upload->subType='' 子目录创建方式默认为hash 也可以为date
        //$upload->dateFormat 子目录方式date的指定日期格式
        //$upload->hashLevle
        //upload() 如果上传成功返回true,失败返回false
        if ($upload->upload()) {
            $info = $upload->getUploadFileInfo();
            return $info;
        }else {
            //是专门来获取上传的错误信息的
            $this->error($upload->getErrorMsg());
        }
    }
}
?>
Index.html
<!DOCTYPE html>
<html>
<body>
    <volist name="filelist" id="vo">
        小图<img src="__PUBLIC__/s-{$vo.filename}"><br>
        大图<img src="__PUBLIC__/m-{$vo.filename}">
    </volist>
    <form action="__URL__/upload" method="POST" enctype="multipart/form-data">
       
        <input type="file" name="file[]"><br>
        <input type="file" name="file[]"><br>
        <input type="file" name="file[]"><br>
        <input type="submit" value="上传">
    </form>
</body>
</html>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。