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 相关文章推荐
对Session和Cookie的区分与解释
Mar 16 PHP
php 分页原理详解
Aug 21 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
Apr 24 PHP
PHP远程调试之XDEBUG
Dec 29 PHP
PHP数组函数知识汇总
May 12 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
PHP设计模式之适配器模式原理与用法分析
Apr 25 PHP
PHP生成(支持多模板)二维码海报代码
Apr 30 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
Apr 22 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
Oct 28 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中的string类型使用说明
2010/07/27 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
2018/08/16 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
python进阶教程之异常处理
2014/08/30 Python
python操作ie登陆土豆网的方法
2015/05/09 Python
深入理解python中的select模块
2017/04/23 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
python使用turtle绘制分形树
2018/06/22 Python
python中退出多层循环的方法
2018/11/27 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
简单的命令查看安装的python版本号
2020/08/28 Python
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
C面试题
2015/10/08 面试题
机电一体化应届生求职信范文
2014/01/24 职场文书
三年级语文教学反思
2014/02/01 职场文书
电气个人求职信范文
2014/02/04 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
python tqdm用法及实例详解
2021/06/16 Python
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS