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 相关文章推荐
其他功能
Oct 09 PHP
PHP中的日期处理方法集锦
Jan 02 PHP
php读取msn上的用户信息类
Dec 05 PHP
php 静态化实现代码
Mar 20 PHP
php 数组的一个悲剧?
May 11 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
浅谈PHP中Stream(流)
Jun 08 PHP
Yii+upload实现AJAX上传图片的方法
Jul 13 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
Nov 03 PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
如何用PHP实现分布算法之一致性哈希算法
May 26 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
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
PHP后端银联支付及退款实例代码
2017/06/23 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
seajs实现强制刷新本地缓存的方法分析
2017/10/16 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
Python中正则表达式的详细教程
2015/04/30 Python
Python yield 使用方法浅析
2017/05/20 Python
python+opencv实现动态物体识别
2018/01/09 Python
Python Cookie 读取和保存方法
2018/12/28 Python
Python按钮的响应事件详解
2019/03/04 Python
在django view中给form传入参数的例子
2019/07/19 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
浅析Python 多行匹配模式
2020/07/24 Python
利用python汇总统计多张Excel
2020/09/22 Python
快速创建 HTML5 Canvas 电信网络拓扑图的示例代码
2018/03/21 HTML / CSS
《囚绿记》教学反思
2014/03/01 职场文书
彩色的翅膀教学反思
2014/04/25 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
利用Pycharm连接服务器的全过程记录
2021/07/01 Python