好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php文件上传类 php文件上传代码 - php类库

php文件上传类 php文件上传代码

一个简单的php文件上传的类,在整理 php 类时发现的一个图片处理类,PHP 处理图片的类已经很多了,有单独处理图片的,也有加水印的,也有生成图片的,总之,在 PHP 当中,处理图片已经很简单了,甚至在一些小型的应用中,直接应用 PHP 的面向过程就可以实现图片的上传过程,当然,为了程序的规范,我们还是有必要使用PHP的面向对象的.

下面的这个PHP文件的上传类主要是用来上传文件的,包括图片,视频,word文档的,其实这里建议用来处理图片,推荐的主要原因是这个类很规范,基本上所有的上传参数都可以在类里面进行定义,而不需要在 php.ini 里面进行修改,代码如下:

<?php   class  files{  /**   * upload   *   * 文件上传   *   * @param String $path e.g. Zend_Registry::get('upload')   * @param Array $files e.g. $_FILES['Filedata']   * @param String $dir e.g. $_POST['dir']   *   * return Array $msg e.g. if($msg['error'])    */   static   function  upload( $path , $files , $dir )  {  $msg = array ();  //文件保存目录路径   $save_path  =  $path ;  //文件保存目录URL   $save_url  =  $path ;  //定义允许上传的文件扩展名   $ext_arr  =  array (  'image'  =>  array ( 'gif' ,  'jpg' ,  'jpeg' ,  'png' ,  'bmp' ),  'flash'  =>  array ( 'swf' ,  'flv' ),  'media'  =>  array ( 'swf' ,  'flv' ,  'mp3' ,  'wav' , 'wm  a ', ' wmv ', ' mid ', ' avi ', ' mpg ', ' asf ', ' rm ', ' rmvb'),  'file'  =>  array ( 'doc' ,  'docx' ,  'xls' ,  'xlsx' , 'pp  t ', ' htm ', ' html ', ' txt ', ' zip ', ' rar ', ' gz ', ' bz2'),  );  //最大文件大小   $max_size  = 1000000;  $save_path  =  realpath ( $save_path ) .  '/' ;  //有上传文件时   if  ( empty empty ( $_FILES ) === false) {  //原文件名   $file_name  =  $files [ 'name' ];  //服务器上临时文件名   $tmp_name  =  $files [ 'tmp_name' ];  //文件大小   $file_size  =  $files [ 'size' ];  //目录名   $dir_name  =  empty empty ( $dir ) ?  'image'  : trim( $dir );  //检查文件名   if  (! $file_name ) {  $msg [ 'error' ] =  "请选择文件。" ;  }  //检查目录   else   if  (@ is_dir ( $save_path ) === false) {  $msg [ 'error' ] =  "上传目录不存在。请联系管理员" ;  }  //检查目录写权限   else   if  (@ is_writable ( $save_path ) === false) {  $msg [ 'error' ] =  "上传目录没有写权限。请联系管理员" ;  }  //检查是否已上传   else   if  (@ is_uploaded_file ( $tmp_name ) === false) {  $msg [ 'error' ] =  "临时文件可能不是上传文件。请重新上传" ;  }  //检查文件大小   else   if  ( $file_size  >  $max_size ) {  $msg [ 'error' ] =  "上传文件大小超过限制。" ;  }  //检查目录名   else   if  ( empty empty ( $ext_arr [ $dir_name ])) {  $msg [ 'error' ] =  "目录名不正确。" ;  }  else   {  //获得文件扩展名   $temp_arr  =  explode ( "." ,  $file_name );  $file_ext  =  array_pop ( $temp_arr );  $file_ext  = trim( $file_ext );  $file_ext  =  strtolower ( $file_ext );  //检查扩展名   if  (in_array( $file_ext ,  $ext_arr [ $dir_name ]) === false) {  $msg [ 'error' ] = "上传文件扩展名是不允许的扩展名。  n只允许 " . implode(" , ", $ext_arr[$dir_name]) . " 格式。";  }  else   {  //创建文件夹   $dbsave  =  "" ;  //数据库中存放的路径   if  ( $dir_name  !==  '' ) {  $save_path  .=  $dir_name  .  "/" ;  $save_url  .=  $dir_name  .  "/" ;  $dbsave  =  $dir_name . '/' ;  if  (! file_exists ( $save_path )) {  mkdir ( $save_path );  }  }  $y  =  date ( "Y" );  $m  =  date ( "m" );  $d  =  date ( "d" );  $save_path  .=  $y  .  "/" ;  $save_url  .=  $y  .  "/" ;  $dbsave  .=  $y . '/' ;  if  (! file_exists ( $save_path )) {  mkdir ( $save_path );  }  $save_path  .=  $m  .  "/" ;  $save_url  .=  $m  .  "/" ;  $dbsave  .=  $m . '/' ;  if  (! file_exists ( $save_path )) {  mkdir ( $save_path );  }  $save_path  .=  $d  .  "/" ;  $save_url  .=  $d  .  "/" ;  $dbsave  .=  $d . '/' ;  if  (! file_exists ( $save_path )) {  mkdir ( $save_path );  }  //新文件名   $new_file_name  =  date ( "YmdHis" ) .  '_'  . rand(1000  0, 99999) .  '.'  .  $file_ext ;  //移动文件   $file_path  =  $save_path  .  $new_file_name ;  if  (move_uploaded_file( $tmp_name ,  $file_path ) === false) {  $msg [ 'error' ] =  "上传文件失败。" ;  }  //数据库最终存储的文件   $dbsave  .=  $new_file_name ;   @ chmod ( $file_path , 0644);  $file_url  =  $save_url  .  $new_file_name ;  $msg [ 'file_url' ] =  $file_url ;  $msg [ 'file_size' ] =  $file_size ;  $msg [ 'db_path' ] =  $dbsave ;  } //检查扩展名   } //目录正确性   return   $msg ;  }  }  //文件上传   }  ?> 

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件,第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。

就像这样:

$_FILES["file"]["name"] - 被上传文件的名称

$_FILES["file"]["type"] - 被上传文件的类型

$_FILES["file"]["size"] - 被上传文件的大小,以字节计

$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称

$_FILES["file"]["error"] - 由文件上传导致的错误代码

这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

查看更多关于php文件上传类 php文件上传代码 - php类库的详细内容...

  阅读:39次