功能强大的php文件上传类

5年以前  |  阅读数:977 次  |  编程语言:PHP 

本文实例为大家分享了php文件上传类,功能很强大,供大家参考,具体内容如下



    <?PHP
    /*
    *文件上传类
    **/
    class upfile{
    private $file_size;//上传源文件大小
    private $file_tem;//上传文件临时储存名
    private $file_name;//上传文件名
    private $file_type;//上传文件类型
    private $file_max_size=2000000;//允许文件上传最大
    private $file_folder="uploadFiles";//文件上传路径
    private $over_write=false;//是否覆盖同名文件
    //允许上传图片的类型
    private $allow_type=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png');


    //构造类,file:上传文件域
    function __construct($file){
    $this->file_name=$_FILES[$file]['name'];//客户端原文件名
    $this->file_type=$_FILES[$file]['type'];//文件类型
    $this->file_tem=$_FILES[$file]['tmp_name'];//储存的临时文件名,一般是系统默认
    $this->file_size=$_FILES[$file]['size'];//文件大小
    }

    //如果文件夹不存在则创建文件夹 
    function creatFolder($f_path){
    if(!file_exists($f_path)){
    mkdir($f_path,0777);
    }
    }

    //判断文件是不是超过上传限制
    function is_big(){
    if($this->file_size>$this->file_max_size){
    echo "文件太大,超过限制!";
    exit;
    }
    }

    //检查文件类型
    function check_type(){
    if(!in_array($this->file_type,$this->allow_type)){
    echo "上传文件类型不正确";
    exit;
    }
    }

    //检查文件是否存在
    function check_file_name(){
    if(!file_exists($this->file_tem)){
    echo "上传文件不存在";
    exit;
    }          
    }

    //检查是否有同名文件,是否覆盖
    function check_same_file($filename){
    if(file_exists($filename)&&$this->over_write!=true){
    echo "同名文件已存在!";
    exit;
    }    
    }

    //移动文件
    function move_file($filename,$destination){
    if(!move_uploaded_file($filename,$destination)){
    echo "移动文件出错";
    exit;
    }
    }

    //检查文件是否是通过 HTTP POST 上传的
    function is_upload_file(){
    if(!is_uploaded_file($this->file_tem)){
    echo "文件不存在";
    exit;
    }
    }

    //获得文件后缀名
    function getext(){
    $ext=$this->file_name;
    $extstr=explode('.',$ext);
    $count=count($extstr)-1;
    return $extstr[$count];
    }

    //新建文件名
    function set_name(){      
    return time().".".$this->getext();
    }

    //建立以年月日为文件夹名
    function creat_mulu(){
    $this->creatFolder("../../upload/".date(Ymd));  
    return "upload/".date(Ymd);
    }

    //生成的文件名
    function files_name(){
    $name=$this->set_name();
    $folder=$this->creat_mulu();
    return "../../".$folder."/".$name;
    }

    //上传文件
    function upload_file(){
    $f_name=$this->files_name();
    move_uploaded_file($this->file_tem,$f_name);
    return $f_name;
    }  

    //生成缩略图
    //最大宽:120,高:120
    function create_simg($img_w,$img_h){
    $name=$this->set_name();
    $folder=$this->creat_mulu();
    $new_name="../../".$folder."/s_".$name;      
    $imgsize=getimagesize($this->files_name());

    switch ($imgsize[2]){
    case 1:
    if(!function_exists("imagecreatefromgif")){
    echo "你的GD库不能使用GIF格式的图片,请使用Jpeg或PNG格式!返回";
    exit();
    }
    $im = imagecreatefromgif($this->files_name());
    break;
    case 2:
    if(!function_exists("imagecreatefromjpeg")){
    echo "你的GD库不能使用jpeg格式的图片,请使用其它格式的图片!返回";
    exit();
    }
    $im = imagecreatefromjpeg($this->files_name());
    break;
    case 3:
    $im = imagecreatefrompng($this->files_name());
    break;
    case 4:
    $im = imagecreatefromwbmp($this->files_name());
    break;
    default:
    die("is not filetype right");
    exit;
    }

    $src_w=imagesx($im);//获得图像宽度
    $src_h=imagesy($im);//获得图像高度
    $new_wh=($img_w/$img_h);//新图像宽与高的比值
    $src_wh=($src_w/$src_h);//原图像宽与高的比值
    if($new_wh<=$src_wh){
    $f_w=$img_w;
    $f_h=$f_w*($src_h/$src_w);
    }else{
    $f_h=$img_h;
    $f_w=$f_h*($src_w/$src_h);
    }
    if($src_w>$img_w||$src_h>$img_h){      
    if(function_exists("imagecreatetruecolor")){//检查函数是否已定义
    $new_img=imagecreatetruecolor($f_w,$f_h);
    if($new_img){
    imagecopyresampled($new_img,$im,0,0,0,0,$f_w,$f_h,$src_w,$src_h);//重采样拷贝部分图像并调整大小
    }else{
    $new_img=imagecreate($f_w,$f_h);
    imagecopyresized($new_img,$im,0,0,0,0,$f_w,$f_h,$src_w,$src_h);
    }
    }else{
    $$new_img=imagecreate($f_w,$f_h);
    imagecopyresized($new_img,$im,0,0,0,0,$f_w,$f_h,$src_w,$src_h);
    }
    if(function_exists('imagejpeg')){
    imagejpeg($new_img,$new_name);
    }else{
    imagepng($new_img,$new_name);
    }
    imagedestroy($new_img);
    }
    //imagedestroy($new_img);
    return $new_name;
    }    

    }
    ?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例