Blogger Information
Blog 25
fans 0
comment 1
visits 21913
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP操作文件的上传与下载
潜轲的博客
Original
1077 people have browsed it
  1. 文件上传类

    class uploadFile

    {

       //最大值
       private $max_size;
       //前缀
       private $perfix;
       //上传路径
       private $upload_path;
       //新的文件
       private $new;
       //设置不可访问属性值
       public function __set($name, $value)
       {
           $this->$name = $value;
       }
       //返回不可访问属性值
       public function __get($name)
       {
           return $this->$name;
       }

      //上传函数

       public function upload($file)

       {

            if($file['error'])

           {

                  //1.限制文件大小

                 if($file['size']>$this->$max_size)

                 {

                      return '上传文件大小不能超过'.$this->max_size.'请压缩后重试';

                  }

                  //2.避免重名

                 $filename = uniqid($this->perfix,false); //第二个参数true会加上一串字符更唯一

                 //3.按日期存放

                if(is_dir($this->upload_path))
               {
                //创建子目录
               $n_dir = $this->upload_path.'/'.date('Ymd');
               if(is_dir($n_dir))
               {
                }
                else
               {
                     mkdir($n_dir,0777,true);
                }
               }
            else
    {
       mkdir($this->upload_path,0777,true);
       $n_dir = $this->upload_path.'/'.date('Ymd');
    }

    //4.限制文件上传类型
    $allow = ['image/png','image/jpg','image/jpeg','image/gif'];
    if(!(in_array($file['type'],$allow)))
    {
       return '文件类型不符,请核对后上传';
    }
    //用文件信息猜测文件类型  finfo 对象
    $fileInfo = new finfo(FILEINFO_MIME_TYPE);
    //用临时文件判断
    $type =  $fileInfo->file($file['tmp_name']);
    if(!(in_array($type,$allow)))
    {
       return'嘿嘿';
    }

    //5.将文件移入创建的文件夹
    //取得文件类型  strrchr 取得最后一个指定符号后的字符 包括指定字符这里用来获取类型
    $suffix = strrchr($file['name'],'.');
    $new_file = $n_dir.'/'.$filename.$suffix;
    if(move_uploaded_file($file['tmp_name'],$new_file))
    {
       $this->new = $new_file;
       return '上传成功';
    }
    else
    {
       return '移入失败';
    }

    }    

    else
    {
       return '上传失败!';
    }

    }

    }

调用时需用$_FILES['name']获取上传文件。即$file = $_FILES['name']


文件下载

  1. 通过get方式获得文件名,明确文件所在根目录,读出文件。

  2. 告诉浏览器输出的是字节流,单位,文件名及内容长度

  3. 输出文件

    $base = './img';

    //注意编码 iconv
    $file = iconv('utf-8','gbk',$file);

    $full_file = $base.'/'.$file;
    //文件大小
    $fileSize = filesize($file);
    //将内容慢慢读取
    $handle = fopen($file,'r');
    //存储字节流
    $content = '';
    //没到末尾
    while(!feof($handle))
    {
       $content .= fread($handle,1024);
    }
    //告诉浏览器信息
    //1.返回字节流
    header("Content-Type:octet/stream");
    //2.返回的单位是字节
    header("Accept-Range:bytes");
    //3.返回的内容长度
    header("Content-Length:$fileSize");
    //4.返回的文件名称
    header("Content-Disposition:attchment;filename=$file");
    //5.输出字节流
    echo $content;



Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post