博主信息
博文 25
粉丝 0
评论 1
访问量 26081
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP操作文件的上传与下载
潜轲的博客
原创
1283人浏览过
  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;



本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学