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之第五天
Oct 09 PHP
PHP用户指南-cookies部分
Oct 09 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 PHP
解析Win7 XAMPP apache无法启动的问题
Jun 26 PHP
百度ping方法使用示例 自动ping百度
Jan 26 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
php基于表单密码验证与HTTP验证用法实例
Jan 06 PHP
Joomla调用系统自带编辑器的实现方法
May 05 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 11 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 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
jquery.ui.draggable中文文档
2009/11/24 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
Python写入数据到MP3文件中的方法
2015/07/10 Python
Python编程中的异常处理教程
2015/08/21 Python
一篇文章入门Python生态系统(Python新手入门指导)
2015/12/11 Python
遗传算法之Python实现代码
2017/10/10 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
Python实现把类当做字典来访问
2019/12/16 Python
最小二乘法及其python实现详解
2020/02/24 Python
python微信公众号开发简单流程实现
2020/03/09 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
篮球赛口号
2014/06/18 职场文书
党员创先争优心得体会
2014/09/11 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
企业安全生产规章制度
2015/08/06 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
Tomcat弱口令复现及利用
2022/05/06 Servers