功能强大的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 相关文章推荐
新版mysql+apache+php Linux安装指南
Oct 09 PHP
探讨如何把session存入数据库
Jun 07 PHP
解析PHP自带的进位制之间的转换函数
Jun 08 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 PHP
使用GD库生成带阴影文字的图片
Mar 27 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
Apr 26 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
PHP格式化MYSQL返回float类型的方法
Mar 30 PHP
PHP生成短网址方法汇总
Jul 12 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
Dec 30 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
PHP数组操作汇总 php数组的使用技巧
2011/07/17 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
laravel实现按月或天或小时统计mysql数据的方法
2019/10/09 PHP
基于Jquery的简单&amp;简陋Tabs插件代码
2010/02/09 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
2020/02/11 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
python抓取网页图片示例(python爬虫)
2014/04/27 Python
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
简单了解python的内存管理机制
2019/07/08 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
Python tcp传输代码实例解析
2020/03/18 Python
浅析Python __name__ 是什么
2020/07/07 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
简单的JAVA编程面试题
2013/03/19 面试题
办公室文员自荐书
2014/02/03 职场文书
中学校庆方案
2014/03/17 职场文书
《广玉兰》教学反思
2014/04/14 职场文书
项目合作协议书
2014/09/23 职场文书
2016猴年春节问候语
2015/11/11 职场文书
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript