热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP100精华:PHP上传类支持缩略图

//首先创建一个上传类,类名uploadclassUpLoad{public$error=;pubic$uploadFile=;public$mimeType=text/plain;public$fiterType=array();public$Filter=;public$fileSiz

  实例:

  1、创建文件upfile.php,代码如下

  //如果收到表单传来的参数,则进行上传处理,否则显示表单

  if(isset($_FILES['uploadinput'])){

  //建目录函数,其中参数$directoryName最后没有"/",

  //要是有的话,以'/'打散为数组的时候,最后将会出现一个空值

  function makeDirectory($directoryName) {

  $directoryName = str_replace("\\","/",$directoryName);

  $dirNames = explode('/', $directoryName);

  $total = count($dirNames) ;

  $temp = '';

  for($i=0; $i<$total; $i++) {

  $temp .= $dirNames[$i].'/';

  if (!is_dir($temp)) {

  $oldmask = umask(0);

  if (!mkdir($temp, 0777)) exit("不能建立目录 $temp");

  umask($oldmask);

  }

  }

  return true;

  }

  if($_FILES['uploadinput']['name'] <> ""){

  //包含上传文件类

  require_once ('class_upload.php');

  //设置文件上传目录

  $savePath = "upload";

  //创建目录

  makeDirectory($savePath);

  //允许的文件类型

  $fileFormat = array('gif','jpg','jpge','png');

  //文件大小限制,单位: Byte,1KB = 1000 Byte //php100.com

  //0 表示无限制,但受php.ini中upload_max_filesize设置影响

  $maxSize = 0;

  //覆盖原有文件吗? 0 不允许 1 允许

  $overwrite = 0;

  //初始化上传类

  $f = new clsUpload( $savePath, $fileFormat, $maxSize, $overwrite);

  //如果想生成缩略图,则调用成员函数 $f->setThumb();

  //参数列表: setThumb($thumb, $thumbWidth = 0,$thumbHeight = 0)

  //$thumb=1 表示要生成缩略图,不调用时,其值为 0

  //$thumbWidth 缩略图宽,单位是像素(px),留空则使用默认值 130

  //$thumbHeight 缩略图高,单位是像素(px),留空则使用默认值 130

  $f->setThumb(1);

  //参数中的uploadinput是表单中上传文件输入框input的名字

  //后面的0表示不更改文件名,若为1,则由系统生成随机文件名

  if (!$f->run('uploadinput',0)){

  //通过$f->errmsg()只能得到最后一个出错的信息,

  //详细的信息在$f->getInfo()中可以得到。

  echo $f->errmsg()."
\n";

  }

  //上传结果保存在数组returnArray中。//php100.com

  echo "

";

 

  print_r($f->getInfo());

  echo "

";

 

  }

  }else{

  ?>

    

  Send this file:
 

  
 

  
 

  
 

  
 

  

  2、创建文件class_upload.php,代码如下

  

  class clsUpload{

  var $saveName;// 保存名

  var $savePath;// 保存路径

  var $fileFormat = array('gif','jpg','doc','application/octet-stream');// 文件格式&MIME限定

  var $overwrite = 0;// 覆盖模式

  var $maxSize = 0;// 文件最大字节

  var $ext;// 文件扩展名

  var $thumb = 0;// 是否生成缩略图

  var $thumbWidth = 130;// 缩略图宽

  var $thumbHeight = 130;// 缩略图高

  var $thumbPrefix = "_";// 缩略图前缀

  var $errno;// 错误代号

  var $returnArray= array();// 所有文件的返回信息

  var $returninfo= array();// 每个文件返回信息

  // 构造函数

  // @param $savePath 文件保存路径

  // @param $fileFormat 文件格式限制数组

  // @param $maxSize 文件最大尺寸

  // @param $overwriet 是否覆盖 1 允许覆盖 0 禁止覆盖

  function clsUpload($savePath, $fileFormat='',$maxSize = 0, $overwrite = 0) {

  $this->setSavepath($savePath);

  $this->setFileformat($fileFormat);

  $this->setMaxsize($maxSize);

  $this->setOverwrite($overwrite);

  $this->setThumb($this->thumb, $this->thumbWidth,$this->thumbHeight);

  $this->errno = 0;

  }

  // 上传

  // @param $fileInput 网页Form(表单)中input的名称

  // @param $changeName 是否更改文件名

  function run($fileInput,$changeName = 1){

  if(isset($_FILES[$fileInput])){

  $fileArr = $_FILES[$fileInput];

  if(is_array($fileArr['name'])){//上传同文件域名称多个文件

  for($i = 0; $i

  $ar['tmp_name'] = $fileArr['tmp_name'][$i];

  $ar['name'] = $fileArr['name'][$i];

  $ar['type'] = $fileArr['type'][$i];

  $ar['size'] = $fileArr['size'][$i];

  $ar['error'] = $fileArr['error'][$i];

  $this->getExt($ar['name']);//取得扩展名,赋给$this->ext,下次循环会更新

  $this->setSavename($changeName == 1 ? '' : $ar['name']);//设置保存文件名

  if($this->copyfile($ar)){

  $this->returnArray[] = $this->returninfo;

  }else{

  $this->returninfo['error'] = $this->errmsg();

  $this->returnArray[] = $this->returninfo;

  }

  }

  return $this->errno ? false : true;


推荐阅读
  • 树莓派 4 HDMI 音频输出问题求解:无声音解决方案探讨 ... [详细]
  • 《Offer冲刺:剑指Offer学习心得与经验分享》 ... [详细]
  • 《思归乐》译文与原文赏析:唐代诗人元稹的诗意解读 ... [详细]
  • 大数据应用实例:电视收视率分析企业项目实操第二篇
    本文继续探讨大数据在电视收视率分析中的应用,详细介绍了如何在CentOS系统中进行防火墙管理。针对CentOS 6.5及更早版本,提供了具体的命令操作步骤,包括停止防火墙服务和禁用防火墙启动。此外,还深入讨论了这些操作对数据传输和系统安全的影响,为实际项目实施提供了宝贵的技术参考。 ... [详细]
  • 如何在华为手机上配置应用后台运行模式? ... [详细]
  • 石大师教你解决电脑黑屏问题:专业重装系统方法详解
    石大师教你解决电脑黑屏问题:专业重装系统方法详解 ... [详细]
  • Spring Security 认证模块的项目构建与初始化
    本文详细介绍了如何构建和初始化Spring Security认证模块的项目。首先,通过创建一个分布式Maven聚合工程,该工程包含四个模块,分别为core、browser(用于演示)、app等,以构成完整的SeehopeSecurity项目。在项目构建过程中,还涉及日志生成机制,确保能够输出关键信息,便于调试和监控。 ... [详细]
  • Navicat for MariaDB 15:可视化数据洞察与智能图表功能详解
    Navicat for MariaDB 15:可视化数据洞察与智能图表功能详解 ... [详细]
  • 轻食餐饮行业进阶指南:从初学者到实现可持续运营
    根据美团外卖的数据,2020年下半年轻食外卖订单量同比增长了50%,同时在线轻食商家的数量也显著增加。本文旨在为轻食餐饮行业的初学者提供全面的进阶指南,从市场趋势分析、产品开发到营销策略,帮助创业者实现可持续运营。通过深入探讨行业动态和成功案例,本文将助力轻食餐饮企业在竞争激烈的市场中脱颖而出。 ... [详细]
  • 如何在IDEA中安装和配置反编译插件以提高代码审查效率
    在 IntelliJ IDEA 中提升代码审查效率的一种方法是安装和配置反编译插件。首先,进入 IDEA 的设置界面,然后导航到插件管理部分。接下来,搜索 "ideaJad" 插件并进行安装。安装完成后,重启 IDEA 以确保插件生效。这将帮助你在审查二进制文件时更加高效地查看源代码。 ... [详细]
  • 本周的工作与生活经历颇为波折。原本决心坚决要与妻子离婚,但令人意外的是,她突然提出和好。这种突如其来的变化让人感到困惑和不解,不知是自己的态度过于软弱还是她的行为背后有其他原因。尽管她再次表示愿意修复关系,但她的冷漠和不关心依旧让我感到失望和无奈。 ... [详细]
  • 织梦系统多条件联动筛选功能详细教程及删除操作指南
    多条件联动筛选功能广泛应用于图片展示、装修设计、机械设备和在线商城等场景,通常筛选条件应聚焦于用户最关心的要素,而非涵盖所有可能的选项。在DedeCMS中,多条件筛选的PHP开发并未内置删除已选条件的功能,但通过理解PHP筛选与JS筛选的不同机制,实现这一功能相对简单且易于操作。 ... [详细]
  • Git基础操作指南:掌握必备技能
    掌握 Git 基础操作是每个开发者必备的技能。本文详细介绍了 Git 的基本命令和使用方法,包括初始化仓库、配置用户信息、添加文件、提交更改以及查看版本历史等关键步骤。通过这些操作,读者可以快速上手并高效管理代码版本。例如,使用 `git config --global user.name` 和 `git config --global user.email` 来设置全局用户名和邮箱,确保每次提交时都能正确标识提交者信息。 ... [详细]
  • 优化后的标题:数据网格视图(DataGridView)在应用程序中的高效应用与优化策略
    在应用程序中,数据网格视图(DataGridView)的高效应用与优化策略至关重要。本文探讨了多种优化方法,包括但不限于:1)通过合理的数据绑定提升性能;2)利用虚拟模式处理大量数据,减少内存占用;3)在格式化单元格内容时,推荐使用CellParsing事件,以确保数据的准确性和一致性。此外,还介绍了如何通过自定义列类型和优化渲染过程,进一步提升用户体验和系统响应速度。 ... [详细]
  • QQ坦白说功能详解:身份标签全解析与应用指南
    如今,许多用户正在体验手机QQ的坦白说功能,许多人对这一功能中的身份标签选择感到好奇。本文将详细介绍可用的身份标签及其具体应用,帮助大家更好地理解和使用坦白说功能。如果你对坦白说还不熟悉,欢迎点击链接了解更多详细信息。 ... [详细]
author-avatar
百万会员XTN_859
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有