自己写的一个PHP上传类

主要功能:
文件上传,获取文件名,获取文件大小,随机生成新文件名,获取文件类型,图片生成缩略图,返回缩略图文件名,返回上传后生成的文件的文件名,返回上传后的文件路径

 

//----------------------------------------------------------------------
//转发时请保留此声明信息,这段声明不并会影响你的速度!
//*******************   IEB上传类 v1.1  *********************************
//作者:卢韦华
//网站:http://www.iebsoft.cn
//电子邮件:yagas60@21cn.com
//版权声明:版权所有,源代码公开,各种用途均可免费使用,但是修改后必须把修改后的文件
//发送一份给作者.
//***********************************************************************
//

class ieb_upload{
 var $FormName; //文件域名称
 var $Directroy; //上传至目录
 var $MaxSize; //最大上传大小
 var $CanUpload; //是否可以上传
 var $doUpFile; //上传的文件名
 var $sm_File; //缩略图名称
 var $Error;  //错误参数
 
 function ieb_upload($formName='', $dirPath='', $maxSize=2097152) //(1024*2)*1024=2097152 就是 2M
 {
  global $FormName, $Directroy, $MaxSize, $CanUpload, $Error, $doUpFile, $sm_File;
  //初始化各种参数
  $FormName = $formName;
  $MaxSize = $maxSize;
  $CanUpload = true;
  $doUpFile = '';
  $sm_File = '';
  $Error = 0;
  
  if ($formName == ''){
   $CanUpload = false;
   $Error = 1;
   break;
   }
  
  if ($dirPath == ''){
   $Directroy = $dirPath;
  }else{
   $Directroy = $dirPath.'/';
  }
 }
 
 //检查文件是否存在
 function scanFile()
 {
  global $FormName, $Error, $CanUpload;
  
  if ($CanUpload){
  
   $scan = is_readable($_FILES[$FormName]['name']);
   
   if ($scan){   
    $Error = 2;
   }
   
   return $scan;
  }
 }
 
 
 //获取文件大小
 function getSize($format = 'B')
 {
  global $FormName, $Error, $CanUpload;
  
  if ($CanUpload){
  
   if ($_FILES[$FormName]['size'] == 0){
    $Error = 3;
    $CanUpload = false;
   }
   
   switch ($format){
   case 'B':
   return $_FILES[$FormName]['size'];
   break;
   
   case 'M':
   return ($_FILES[$FormName]['size'])/(1024*1024);
   }
   
  }
 }
 
 //获取文件类型
 function getExt()
 {
  global $FormName, $Error, $CanUpload;
  
  if ($CanUpload){
   $ext=$_FILES[$FormName]['name'];
   $extStr=explode('.',$ext);
   $count=count($extStr)-1;
  }
  return $extStr[$count];
 }
 
 //获取文件名称
 function getName()
 {
  global $FormName, $CanUpload;
  
  if ($CanUpload){
   return $_FILES[$FormName]['name'];
  }
 }
 
 //新建文件名
 function newName()
 {
  global $CanUpload, $FormName;
  
  if ($CanUpload){
   $FullName=$_FILES[$FormName]['name'];
   $extStr=explode('.',$FullName);
   $count=count($extStr)-1;
   $ext = $extStr[$count];
   
   return date('YmdHis').rand(0,9).'.'.$ext;
  }
 }
 
 //上传文件
 function upload($fileName = '')
 {
  global $FormName, $Directroy, $CanUpload, $Error, $doUpFile;
  
  if ($CanUpload){
   if ($_FILES[$FormName]['size'] == 0){
    $Error = 3;
    $CanUpload = false;
    return $Error;
    break;
   }
  }
  
  if($CanUpload){
  
   if ($fileName == ''){
    $fileName = $_FILES[$FormName]['name'];
   }
       
   $doUpload=@copy($_FILES[$FormName]['tmp_name'], $Directroy.$fileName);
   
   if($doUpload)
   {
    $doUpFile = $fileName;
    chmod($Directroy.$fileName, 0777);
    return true;
   }else{
    $Error = 4;
    return $Error;
   }
  }
 }
 
 //创建图片缩略图
 function thumb($dscChar='',$width=150,$height=113)
 {
  global $CanUpload, $Error, $Directroy, $doUpFile, $sm_File;
  
  if ($CanUpload && $doUpFile != ''){
   $srcFile = $doUpFile;
   
   if ($dscChar == ''){
    $dscChar = 'sm_';
   }
   
   $dscFile = $Directroy.$dscChar.$srcFile;
   $data = getimagesize($Directroy.$srcFile,&$info);
   
   switch ($data[2]) {
   case 1:
   $im = @imagecreatefromgif($Directroy.$srcFile);
   break;
   
   case 2:
   $im = @imagecreatefromjpeg($Directroy.$srcFile);
   break;
   
   case 3:
   $im = @imagecreatefrompng($Directroy.$srcFile);
   break;
   }
   
   $srcW=imagesx($im);
   $srcH=imagesy($im);
   $ni=imagecreatetruecolor($width,$height);
   imagecopyresized($ni,$im,0,0,0,0,$width,$height,$srcW,$srcH);
   $cr = imagejpeg($ni,$dscFile);
   chmod($dscFile, 0777);
   
   if ($cr){
    $sm_File = $dscFile;
    return true;
   }else{
    $Error = 5;
    return $Error;
   }
  }
 }
 
 //显示错误参数
 function Err(){
  global $Error;
  return $Error;
 }
 
 //上传后的文件名
 function UpFile(){
  global $doUpFile, $Error;
  if ($doUpFile != ''){
   return $doUpFile;
  }else{
   $Error = 6;
  }
 }
 
 //上传文件的路径
 function filePath(){
  global $Directroy, $doUpFile, $Error;
  if ($doUpFile != ''){
   return $Directroy.$doUpFile;
  }else{
   $Error = 6;
  }  
 }
 
 //缩略图文件名称
 function thumbMap(){
  global $sm_File, $Error;
  if ($sm_File != ''){
   return $sm_File;
  }else{
   $Error = 6;
  }
 }
 
 //显示版本信息
 function ieb_version(){
  return 'IEB_UPLOAD CLASS Ver 1.1';
 }
}
?>

使用方法:

<?php
//加载上传类
include('ieb_upload.inc');
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body style="font-size:12px;">
<form action="" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="file">
<input type="submit" name="Submit" value="提交">
<input name="scan" type="hidden" id="up" value="true">
</form><b /><br/>

<?php
if(isset($_REQUEST['scan'])){
//声明一个上传类
$upfos = new ieb_upload('file','upload');

/* ieb_upload( FormName, [Directroy, MaxSize])

  FormName: 文件域的名称,这个例子里用的是 file 。这个参数不能省略。
  Directroy: 保存上传文件的目录名称。此参数如果省略,文件将上传至该处理页目录中。
  MaxSize: 允许上传的文件的大小限制。默认值为 2097152 byte (即 2M)。
*/

//返回将要上传的文件名称
echo '文件名称:' . $upfos -> getName() . '<br/>';

//返回文件后缀名
echo '文件类型:' . $upfos -> getExt() . '<br/>';

//返回文件大小
echo '文件大小:' . $upfos -> getSize() . '<br/>';

/* getSize( format )

  format: 返回文件大小的单位值。默认值为 B。
  B 为 byte
  M 为 MB
  例:getSize( 'B' );
*/

//随机生成的文件名
echo '随机文件:' . $upfos -> newName() . '<br/>';

/* 建议使用随机生成的文件名,以避免上传重名的文件。
例如: $upfos -> upload ( $upfos -> newName());
*/ 

//上传文件
$upfos -> upload();

/* upload( filename )

  filename: 上传至服务器后生成这个文件名。默认值为原来的文件名。
*/

//生成缩略图
$upfos -> thumb();

/* thumb( [key, width, height] )

  key: 生成缩略图的关键字。默认值为"sm_"。如果上传的文件名为 12345.jpg,缩略图的文件名就为 sm_12345.jpg。
  width: 缩略图的宽度。默认值为 150 。
  height: 缩略图的高度。默认值为 113。
  例:$upfos -> thumb ( 'slt_', 200, 140);
*/

//返回生成的文件名
echo '生成文件:' . $upfos -> UpFile() . '<br/>';

//返回文件的路径
echo '文件路径:' . $upfos -> filePath() . '<br/>';

//返回缩略图的名称
echo '缩略图片:' . $upfos -> thumbMap() . '<br/>';

//返回上传类版本信息
echo '版本信息:' . $upfos -> ieb_version() . '<br/>';
}
?>
</body>
</html>

时间: 2024-10-31 09:52:06

自己写的一个PHP上传类的相关文章

PHP手写的图片上传类

一个新手写的 PHP 图片上传类,基本的功能已经满足,可以返回客户端文件名,文件大小,临时文件夹路径,允许上传的文件类型,文件后缀,新路径,新文件名,图片宽度,图片高度,自定义上传成功消息,显示上传的状态..是否上传成功的信息等等,外加构造函数,对于新手学习来说,已经足够了,值得研究学习.. 在使用时,和其它PHP类一样,先要进行初始化对象,在前台调用函数方法即可,这里不再详细说明,这个类的研究价值主要在于代码的规范与实用,并没有大量繁琐的代码,都是一些简单的上传函数整合成的一个PHP图片上传类

一个经典的PHP文件上传类分享_php实例

文件上传是项目开发中比较常见的功能,但文件上传的过程比较繁琐,只要是有文件上传的地方就需要编写这些复杂的代码.为了能在每次开发中降低功能的编写难度,也为了能节省开发时间,通常我们都会将这些反复使用的一段代码封装到一个类中.帮助开发者在以后的开发中,通过编写几条简单代码就可以实现复杂的文件上传功能.对于基础薄弱的读者,只要会使用本类即可,而对一些喜欢挑战的朋友,可以尝试去读懂它,并能开发一个属于自己的文件上传类. 一.需求分析 要球自定义文件上传类,即在使用非常简便的前提下,又可以完成以下几项功能

请问一个struts2上传文件的问题

问题描述 我写了一个struts2上传文件的例子,出现了一个很奇怪的问题,提交表单以后,页面直接跳转到result="input"的页面,action里面的断点也没有执行,而且浏览器上的url显示的是fileupload.action,页面却已经跳转到了input返回页面:如果file控件里不加文件,就会执行action里面的断点 解决方案 解决方案二:上代码,jsp和Action解决方案三:TSysUpfileAction.javapackagems.platform.system.

php文件上传类与详解(1/2)

php教程 配置中的 upload_tmp_dir 这个参数进行比较,如果文件在这个目录下面,那么 move_uploaded_file 才会进行移动操作.而且这个比较是大小写敏感,/ 在windows 下面也是不一样的.而在php配置文件解析的时候,会调用一个realpath 函数,也就是是说,你在move_uploaded_file 之前, 必须对$file['tmp_name'] = realpath($file['tmp_name']); realpath 一下.     还有一种情况,

求一个SOCKET上传文件的工具类

问题描述 求一个SOCKET上传文件的工具类有客户端和服务器端哪位高手能支持下 解决方案 解决方案二:这么简单的东西.服务端监听一个端口,接受这个端口的数据,写入文件即可.客户端建立相应端口的socket,往里面写数据即可.解决方案三:使用ftp类库吧,,,简单..

一个实用的php 文件上传类代码

这里是来自网络朋友的一个实现的文件上传类代码,我们详细的介绍了每个变量的用处,下面看看吧,有需要可以参考一下. <?php教程  /**   * 文件上传类   */  class uploadFile {   public $max_size = '1000000';//设置上传文件大小   public $file_name = 'date';//重命名方式代表以时间命名,其他则使用给予的名称   public $allow_types;//允许上传的文件扩展名,不同文件类型用"|&q

一个完整的php文件上传类实例讲解_php实例

这个文件上传类可以自定上传文件大小与上传文件类型及文件保存地址,在使用过程中有一个问题就是如果是中文文件名进行上传就会出现乱码,所以大家解决办法就是把页面保存成uft8即可解决. 下面就是为大家分享的代码: <?php define('NO_FILE', '不存在上传文件'); define('NOT_ALLOW_EXT', '文件类型不在允许范围内'); define('NOT_ALLOW_SIZE', '文件大小不在允许范围内'); define('HAS_THE_FILE', '该文件已经

ASP实例:一个简单的ASP无组件上传类

简单的ASP无组件上传类,发出来让大家看看.可以做做实验! 以下为引用的内容: <%@ language="javascript"%><%var self = Request.serverVariables("SCRIPT_NAME");if (Request.serverVariables("REQUEST_METHOD")=="POST"){        var oo = new uploadFile(

PHP中codeigniter文件上传类代码实例

  codeigniter文件上传类代码实例 文件上传类 CodeIgniter 的文件上传类允许文件被上传.您可以设置指定上传某类型的文件及指定大小的文件. 处理过程 上传文件普遍的过程: 一个上传文件用的表单,允许用户选择一个文件并上传它. 当这个表单被提交,该文件被上传到指定的目录. 同时,该文件将被验证是否符合您设定的要求. 一旦文件上传成功,还要返回一个上传成功的确认窗口. 这里有一个简短的教程来显示这个过程.此后你将会找到相关的参考信息. 创建上传表单 运用文本编辑器创建一个名为up