php上传图片类及用法示例


Posted in PHP onMay 11, 2016

本文实例讲述了php上传图片类及用法。分享给大家供大家参考,具体如下:

1.类文件名为:upclass.php

<?php
class upclass{
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=javascript>alert('$errorstr');location='javascript:history.go(-1)';</script>";
  exit();
 }
 function save(){
  $this->check_path();
  $this->check_size();
  $this->check_type();
  $this->up_photo();
  $this->showphoto();
 }
}
?>

2.html页面:

<form action="upphoto.php" method="post" enctype="multipart/form-data">
图片来源:<input type="file" name="photo" id="photo">
<input type="submit" name="submit" value="上传">
</form>

3.调用类的文件名为:upphoto.php

<?php
header("Content-Type:text/html; charset=utf-8"); 
//类的实例化:
include("upclass.php");//类的文件名是upoop.php
$up=new upclass();
$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();
}
?>
<?php
$images=$up->get_ph_name($_FILES['photo']['name']);
 echo "<img src='$images' />";
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
DISCUZ 分页代码
Jan 02 PHP
PHP 命令行参数详解及应用
May 18 PHP
提高define性能的php扩展hidef的安装和使用
Jun 14 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
thinkphp学习笔记之多表查询
Jul 28 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
php微信浏览器分享设置以及回调详解
Aug 01 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
PHP对称加密函数实现数据的加密解密
Oct 27 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
thinkPHP3.2.2框架行为扩展及demo示例
Jun 19 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
Oct 17 PHP
php通过smtp邮件验证登陆的方法
May 11 #PHP
Smarty变量用法详解
May 11 #PHP
基于PHP实现商品成交时发送短信功能
May 11 #PHP
Smarty环境配置与使用入门教程
May 11 #PHP
理解php依赖注入和控制反转
May 11 #PHP
php结合web uploader插件实现分片上传文件
May 10 #PHP
配置Nginx+PHP的正确思路与过程
May 10 #PHP
You might like
PHP删除数组中的特定元素的代码
2012/06/28 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
试用php中oci8扩展
2015/06/18 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
javascript工具库代码
2012/03/29 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
Python列表计数及插入实例
2014/12/17 Python
介绍Python中的文档测试模块
2015/04/28 Python
python数据封装json格式数据
2018/03/04 Python
Windows下python3.7安装教程
2018/07/31 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
python实现根据文件格式分类
2019/10/31 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
建筑自我鉴定
2013/10/19 职场文书
《长城》教学反思
2014/02/14 职场文书
2015年司法局工作总结
2015/05/22 职场文书
党支部季度考核意见
2015/06/02 职场文书
遗愿清单观后感
2015/06/09 职场文书
结婚纪念日感言
2015/08/01 职场文书
小组口号霸气押韵
2015/12/24 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
Python实现排序方法常见的四种
2021/07/15 Python
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL