本文实例为大家分享了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发邮件类,包括了功能强大的PHP发邮件类的使用技巧和注意事项,需要的朋友参考一下 本文示例为大家分享了强大的PHP发邮件类,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍PHP大文件分块上传功能实例详解,包括了PHP大文件分块上传功能实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP大文件分块上传功能。分享给大家供大家参考,具体如下: 前端代码 使用file.slice将文件进行分割,然后分别进行异步上传。 后端代码 在所有的文件上传成功之后,合并生成原来的大文件 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作
本文向大家介绍PHP大文件切割上传功能实例分析,包括了PHP大文件切割上传功能实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP大文件切割上传功能。分享给大家供大家参考,具体如下: 大家都知道php上传文件有限制,如果没有修改过php.ini文件的话,默认的上传大小限制为2M,那么该如何上传大文件了,比如说上传一个1G多的大文件,可以使用大文件切割上传的方式来解决。 何为大文件
本文向大家介绍ASP.NET实现大文件上传功能,包括了ASP.NET实现大文件上传功能的使用技巧和注意事项,需要的朋友参考一下 需要下载NeatUpload插件 上传页面: 后台源码: 这里直接获取上传文件夹文件名称提供下载 以上就是本文的全部内容,希望对大家的学习有所帮助。
本文向大家介绍php轻松实现文件上传功能,包括了php轻松实现文件上传功能的使用技巧和注意事项,需要的朋友参考一下 本文分为五个部分针对php上传文件进行分析讲解,具体内容如下 文件上传变量 将服务器上的临时文件移动到指定目录下 php.ini上传相关配置 error错误号 单文件上传实例 1.文件上传变量 2.将服务器上的临时文件移动到指定目录下 3.php.ini上传相关配置 4.error错
本文向大家介绍PHP大文件切割上传并带进度条功能示例,包括了PHP大文件切割上传并带进度条功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP大文件切割上传并带进度条功能。分享给大家供大家参考,具体如下: 前面一篇介绍了PHP大文件切割上传功能,这里再来进一步讲解PHP大文件切割上传并带进度条功能。 项目结构图: 14-slice-upload-fix.html文件: 13-sl