功能强大的php文件上传类


Posted in PHP onAugust 29, 2016

本文实例为大家分享了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下几种删除目录的方法总结
Aug 19 PHP
PHP通用分页类page.php[仿google分页]
Aug 31 PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
PHP清除字符串中所有无用标签的方法
Dec 01 PHP
php实现XSS安全过滤的方法
Jul 29 PHP
PHP在线书签系统分享
Jan 04 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 PHP
php实现留言板功能(会话控制)
May 23 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
功能强大的PHP发邮件类
Aug 29 #PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 #PHP
Laravel 5.3 学习笔记之 错误&amp;日志
Aug 28 #PHP
Laravel 5.3 学习笔记之 配置
Aug 28 #PHP
Laravel 5.3 学习笔记之 安装
Aug 28 #PHP
PHP实现导出带样式的Excel
Aug 28 #PHP
Linux系统中为php添加pcntl扩展
Aug 28 #PHP
You might like
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
php二维码生成以及下载实现
2017/09/28 PHP
javascript中对对层的控制
2006/12/29 Javascript
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
Python Tkinter GUI编程入门介绍
2015/03/10 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
介绍一下Java中的Class类
2015/04/10 面试题
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
中学自我评价
2014/01/31 职场文书
企业演讲比赛主持词
2014/03/18 职场文书
取保候审保证书
2014/04/30 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
消防安全主题班会
2015/08/12 职场文书
初中政治教学工作总结
2015/08/13 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python