首页 > php上传下载 > php文件上传代码(支持文件批量上传)

php文件上传代码(支持文件批量上传)

本款文件上传类,默认是上传单文件的,我们只要修改$inputname ='files'为你的表单名就可以方便的实现批量文件上传了,$savename = ''保存文件名, $alowexts = array()设置允许上传的类型,$savepath = ''保存路径。

<?php
class upload {
    public $savepath;
    public $files;
    private $error;
    function __construct($inputname = 'files', $savepath = '', $savename = '', $alowexts = array() , $maxsize = 1024000) {
        if (!$alowexts) $alowexts = explode('|', upload_ftype);
        $file_array = array();
        $savepath = str_replace('', '/', $savepath);
        $savename = preg_replace('/[^a-z0-9_]+/i', '', $savename);
        $this->savepath = substr($savepath, -1) == '/' ? $savepath : $savepath . '/'; //路径名以/结尾
        if (!make_dir($this->savepath)) {
            $this->error = 8;
            $this->error();
        }
        //exit($this->savepath);
        if (!is_writeable($this->savepath)) {
            $this->error = 9;
            $this->error();
        }
        if (sizeof($_files[$inputname]['error']) > 10) {
            $this->error = 13;
            $this->error();
        }
        $max = sizeof($_files[$inputname]['error']) - 1;
        //exit($this->savepath.$savename);
        foreach ($_files[$inputname]['error'] as $key => $error) {
            if ($error == upload_err_ok) //批量上传
            {
                $savename = $savename ? $savename : date('ymdims') . mt_rand(10000, 99999);
                $fileext = strtolower(get_fileext($_files[$inputname]['name'][$key]));
                $savename = $savename . '.' . $fileext;
                $tmp_name = $_files[$inputname]['tmp_name'][$key];
                $filesize = $_files[$inputname]['size'][$key];
                if (!in_array($fileext, $alowexts)) {
                    $this->error = 10;
                    $this->error();
                }
                if ($filesize > $maxsize) {
                    $this->error = 11;
                    $this->error();
                }
                if (!$this->isuploadedfile($tmp_name)) {
                    $this->error = 12;
                    $this->error();
                }
                if (move_uploaded_file($tmp_name, $this->savepath . $savename) || @copy($tmp_name, $this->savepath . $savename)) {
                    //exit($this->savepath.$savename);
                    @chmod($savename, 0644);
                    @unlink($tmp_name);
                    $file_array[] = $this->savepath . $savename;
                }
            } else {
                $this->error = $error;
                $this->error();
            }
            unset($savename);
        }
        $this->files = $file_array;
        return true;
    }
    function isuploadedfile($file) //去掉系统自带的反斜线
    {
        return (is_uploaded_file($file) || is_uploaded_file(str_replace('', '', $file)));
    }
    function error() {
        $upload_error = array(
            0 => '文件上传成功 !',
            1 => '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值 !',
            2 => '上传文件的大小超过了 html 表单中 max_file_size 选项指定的值 !',
            3 => '文件只有部分被上传 !',
            4 => '没有文件被上传 !',
            5 => '未知错误!',
            6 => '找不到临时文件夹。 !',
            7 => '文件写入临时文件夹失败 !',
            8 => '附件目录创建失败 !',
            9 => '附件目录没有写入权限 !',
            10 => '不允许上传该类型文件 !',
            11 => '文件超过了管理员限定的大小 !',
            12 => '非法上传文件 !',
            13 => '最多可同时上传10个文件 !'
        );
        showmsg($upload_error[$this->error]);
    }
}
//使用方法
new upload();


教程链接:http://www.phprm.com/scxz/fs965.html

随意转载~但请保留教程地址★

标签:文件上传 代码 批量上传

相关文章

发表留言