php图片上传类 附调用方法


Posted in PHP onMay 15, 2016

本文实例为大家分享php图片上传类,供大家参考,具体内容如下

 调用方法:

<?php
header("Content-Type:text/html; charset=utf-8"); 
//类的实例化:
include("uppoo.php");//类的文件名是upoop.php
$up=newupphoto;
$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();
}
?>
//上传图片的HTML:
<form action="upphoto.php?action=act" method="post" enctype="multipart/form-data">
图片来源:<input type="file" name="photo">
<input type="submit" name="submit" value="上传">

 上传类,保存文件名称为 uppoo.php:

<?php
class upphoto{
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=java script>alert('$errorstr');location='java script:history.go(-1);';</script>";
  exit();
 }
 function save(){
  $this->check_path();
  $this->check_size();
  $this->check_type();
  $this->up_photo();
  $this->showphoto();
 }
}
?>

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

PHP 相关文章推荐
一个取得文件扩展名的函数
Oct 09 PHP
php strtotime 函数UNIX时间戳
Jan 14 PHP
体育彩票排列三组选三算法分享
Mar 07 PHP
php中cookie的使用方法
Mar 29 PHP
php实现的CSS更新类实例
Sep 22 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
通过Email发送PHP错误的方法
Jul 20 PHP
php判断当前操作系统类型
Oct 28 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
PHP Mysqli 常用代码集合
Nov 12 PHP
基于php流程控制语句和循环控制语句(讲解)
Oct 23 PHP
如何用PHP实现分布算法之一致性哈希算法
May 26 PHP
php简单的上传类分享
May 15 #PHP
分享php多功能图片处理类
May 15 #PHP
非常经典的PHP文件上传类分享
May 15 #PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 #PHP
非常实用的php验证码类
May 15 #PHP
thinkphp框架下404页面设置 仅三步
May 14 #PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 #PHP
You might like
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
JS 遮照层实现代码
2010/03/31 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
Python生成随机数的方法
2014/01/14 Python
python 上下文管理器使用方法小结
2017/10/10 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
python在非root权限下的安装方法
2018/01/23 Python
Python多线程扫描端口代码示例
2018/02/09 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
更新修改后的Python模块方法
2019/03/03 Python
python:动态路由的Flask程序代码
2019/11/22 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
代办出身证明书
2014/10/21 职场文书
开天辟地观后感
2015/06/09 职场文书
成事在人观后感
2015/06/16 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
Java中的继承、多态以及封装
2022/04/11 Java/Android
Golang Web 框架Iris安装部署
2022/08/14 Python