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 相关文章推荐
PHP实现MySQL更新记录的代码
Jun 07 PHP
PHP脚本中include文件出错解决方法
Nov 20 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
php多文件上传功能实现原理及代码
Apr 18 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
Jun 21 PHP
PHP中捕获超时事件的方法实例
Feb 12 PHP
php中smarty模板条件判断用法实例
Jun 11 PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 PHP
php图片裁剪函数
Oct 31 PHP
php成功操作redis cluster集群的实例教程
Jan 13 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 PHP
Smarty缓存机制实例详解【三种缓存方式】
Jul 20 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导入大量数据到mysql性能优化技巧
2014/12/29 PHP
浅谈php冒泡排序
2014/12/30 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
python复制文件代码实现
2013/12/23 Python
Python解决鸡兔同笼问题的方法
2014/12/20 Python
Python实现Const详解
2015/01/27 Python
在Django中使用Sitemap的方法讲解
2015/07/22 Python
python字符串的常用操作方法小结
2016/05/21 Python
python 类详解及简单实例
2017/03/24 Python
Python处理文本换行符实例代码
2018/02/03 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
销售员岗位职责范本
2014/02/03 职场文书
党员检讨书
2014/10/13 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
五一放假通知怎么写
2015/08/18 职场文书
委托书范本格式
2019/04/18 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
pytorch 6 batch_train 批训练操作
2021/05/28 Python
详解Java实践之适配器模式
2021/06/18 Java/Android