功能强大的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 相关文章推荐
论坛头像随机变换代码
Oct 09 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
在html文件中也可以执行php语句的方法
Apr 09 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
Apr 20 PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 PHP
解决php表单重复提交实现方法
Sep 29 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
PHP设计模式之适配器模式定义与用法详解
Apr 03 PHP
PHP实现正则匹配所有括号中的内容
Jun 22 PHP
PHP简单验证码功能机制实例详解
Mar 27 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
php在线打包程序源码
2008/07/27 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
微信公众号OAuth2.0网页授权问题浅析
2017/01/21 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
python使用生成器实现可迭代对象
2018/03/20 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
Python实现中值滤波去噪方式
2019/12/18 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
财务管理专业自荐信范文
2013/12/24 职场文书
村党支部书记承诺书
2014/05/29 职场文书
群教班子对照检查材料
2014/08/26 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
教师年度考核个人总结
2015/02/12 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
详解Java实践之抽象工厂模式
2021/06/18 Java/Android