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 相关文章推荐
怎样在UNIX系统下安装MySQL
Oct 09 PHP
PHP session有效期问题
Apr 26 PHP
判断是否为指定长度内字符串的php函数
Feb 16 PHP
php 删除记录同时删除图片文件的实现代码
May 12 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
Dec 05 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
Jun 05 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
php使用google地图应用实例
Dec 31 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
php xhprof使用实例详解
Apr 15 PHP
PHP Primary script unknown 解决方法总结
Aug 22 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
2006/12/23 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
PHP合并静态文件详解
2014/11/14 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
js单例模式详解实例
2013/11/21 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
初识Node.js
2014/09/03 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
详细介绍Python语言中的按位运算符
2013/11/26 Python
Python中isnumeric()方法的使用简介
2015/05/19 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
python中的django是做什么的
2020/07/31 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
幼儿园保育员辞职信
2014/01/12 职场文书
项目合作意向书模板
2014/07/29 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
大学生团日活动总结
2015/05/06 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书