php图片上传类 附调用方法


Posted in PHP onMay 15, 2016

本文实例为大家分享php图片上传类,供大家参考,具体内容如下

 调用方法:

<?php
header("Content-Type:text/html; charset=utf-8"); 
//类的实例化:
include("uppoo.php");//类的文件名是upoop.php
$up=newupphoto;
$submit=$_POST['submit'];
if($submit=="上传"){
$up->get_ph_tmpname($_FILES['photo']['tmp_name']);
$up->get_ph_type($_FILES['photo']['type']);
$up->get_ph_size($_FILES['photo']['size']);
$up->get_ph_name($_FILES['photo']['name']);
$up->save();
}
?>
//上传图片的HTML:
<form action="upphoto.php?action=act" method="post" enctype="multipart/form-data">
图片来源:<input type="file" name="photo">
<input type="submit" name="submit" value="上传">

 上传类,保存文件名称为 uppoo.php:

<?php
class upphoto{
public $previewsize=0.125 ;  //预览图片比例
public $preview=0;  //是否生成预览,是为1,否为0
  public $datetime;  //随机数
  public $ph_name;  //上传图片文件名
  public $ph_tmp_name;  //图片临时文件名
  public $ph_path="./userimg/";  //上传文件存放路径
public $ph_type;  //图片类型
  public $ph_size;  //图片大小
  public $imgsize;  //上传图片尺寸,用于判断显示比例
  public $al_ph_type=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png');  //允许上传图片类型
  public $al_ph_size=1000000;  //允许上传文件大小
 function __construct(){
  $this->set_datatime();
 }
 function set_datatime(){
  $this->datetime=date("YmdHis");
 }
  //获取文件类型
 function get_ph_type($phtype){
   $this->ph_type=$phtype;
 }
 //获取文件大小
 function get_ph_size($phsize){
   $this->ph_size=$phsize."<br>";
 }
 //获取上传临时文件名
 function get_ph_tmpname($tmp_name){
  $this->ph_tmp_name=$tmp_name;
  $this->imgsize=getimagesize($tmp_name);
 }
 //获取原文件名
 function get_ph_name($phname){
  $this->ph_name=$this->ph_path.$this->datetime.strrchr($phname,"."); //strrchr获取文件的点最后一次出现的位置
//$this->ph_name=$this->datetime.strrchr($phname,"."); //strrchr获取文件的点最后一次出现的位置
return $this->ph_name;
 }
// 判断上传文件存放目录
 function check_path(){
  if(!file_exists($this->ph_path)){
   mkdir($this->ph_path);
  }
 }
 //判断上传文件是否超过允许大小
 function check_size(){
  if($this->ph_size>$this->al_ph_size){
   $this->showerror("上传图片超过2000KB");
  }
 }
 //判断文件类型
 function check_type(){
  if(!in_array($this->ph_type,$this->al_ph_type)){
     $this->showerror("上传图片类型错误");
  }
 }
 //上传图片
  function up_photo(){
  if(!move_uploaded_file($this->ph_tmp_name,$this->ph_name)){
  $this->showerror("上传文件出错");
  }
 }
 //图片预览
  function showphoto(){
   if($this->preview==1){
   if($this->imgsize[0]>2000){
    $this->imgsize[0]=$this->imgsize[0]*$this->previewsize;
       $this->imgsize[1]=$this->imgsize[1]*$this->previewsize;
   }
     echo("<img src=\"{$this->ph_name}\" width=\"{$this->imgsize['0']}\" height=\"{$this->imgsize['1']}\">");
   }
  }
 //错误提示
 function showerror($errorstr){
  echo "<script language=java script>alert('$errorstr');location='java script:history.go(-1);';</script>";
  exit();
 }
 function save(){
  $this->check_path();
  $this->check_size();
  $this->check_type();
  $this->up_photo();
  $this->showphoto();
 }
}
?>

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

PHP 相关文章推荐
PHP完整的日历类(CLASS)
Nov 27 PHP
并发下常见的加锁及锁的PHP具体实现代码
Oct 12 PHP
php学习笔记之 函数声明(二)
Jun 09 PHP
php自动注册登录验证机制实现代码
Dec 20 PHP
phpmyadmin config.inc.php配置示例
Aug 27 PHP
五款PHP代码重构工具推荐
Oct 14 PHP
php输出xml属性的方法
Mar 19 PHP
CodeIgniter框架常见用法工作总结
Mar 16 PHP
PHP多进程编程实例详解
Jul 19 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 PHP
PHP时间函数使用详解
Mar 21 PHP
PHP判断函数是否被定义的方法
Jun 21 PHP
php简单的上传类分享
May 15 #PHP
分享php多功能图片处理类
May 15 #PHP
非常经典的PHP文件上传类分享
May 15 #PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 #PHP
非常实用的php验证码类
May 15 #PHP
thinkphp框架下404页面设置 仅三步
May 14 #PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 #PHP
You might like
memcache命令启动参数中文解释
2014/01/13 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python中安装模块包版本冲突问题的解决
2017/05/02 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
Python生成器generator原理及用法解析
2020/07/20 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
2015年三年级班主任工作总结
2015/05/21 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
mysql timestamp比较查询遇到的坑及解决
2021/11/27 MySQL
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers