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 相关文章推荐
PHP4实际应用经验篇(8)
Oct 09 PHP
mysql5的sql文件导入到mysql4的方法
Oct 19 PHP
php 静态变量的初始化
Nov 15 PHP
php垃圾代码优化操作代码
Aug 05 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 PHP
thinkphp在模型中自动完成session赋值示例代码
Sep 09 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
Jan 18 PHP
微信公众号开发客服接口实例代码
Oct 21 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 PHP
php json相关函数用法示例
Mar 28 PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
js获取单选框或复选框值及操作
2012/12/18 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
Python中返回字典键的值的values()方法使用
2015/05/22 Python
《Python学习手册》学习总结
2018/01/17 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
Python中装饰器学习总结
2018/02/10 Python
浅析Python四种数据类型
2018/09/26 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
Django JWT Token RestfulAPI用户认证详解
2019/01/23 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
init进程的作用
2012/04/12 面试题
幼师专业毕业生自荐信
2013/09/29 职场文书
应届生英语教师求职信
2013/11/05 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书