当前位置:首页 > PHP教程 > php文件操作 > 列表

PHP实现常用文件上传

发布:smiling 来源: PHP粉丝网  添加日期:2018-06-04 11:19:52 浏览: 评论:0 

在PHP的使用中,它有着非常方便的操作设计,这次文章就给大家介绍下怎么使用PHP实现常用文件上传,相信这也是大多数人会遇到的问题,下面我们具体看看上传方法。

  1. <?php 
  2. /** 
  3.  * 上传文件类 
  4.  * @param _path : 服务器文件存放路径 
  5.  * @param _allowType : 允许上传的文件类型和所对应的MIME 
  6.  * @param _file : 上传的文件信息 
  7.  */ 
  8. class Upload{ 
  9.   
  10.  private $_path; 
  11.  private $_allowType; 
  12.  private $_file; 
  13.  /** 
  14.   * 构造函数 
  15.   * @param string : 服务器上存放上传文件的路径 
  16.   */ 
  17.  function __construct( $path = '' ) 
  18.  { 
  19.   $this->_path = $path; 
  20.   $this->_allowType = array( 
  21.     // images 
  22.     'bmp' => 'image/x-ms-bmp', 
  23.     'jpg' => 'image/jpeg', 
  24.     'jpeg' => 'image/jpeg', 
  25.     'gif' => 'image/gif', 
  26.     'png' => 'image/png', 
  27.     'tif' => 'image/tiff', 
  28.     'tiff' => 'image/tiff', 
  29.     'tga' => 'image/x-targa', 
  30.     'psd' => 'image/vnd.adobe.photoshop', 
  31.     //文本 
  32.     'txt' => 'text/plain', 
  33.     'php' => 'text/x-php', 
  34.     'html' => 'text/html', 
  35.     'htm' => 'text/html', 
  36.     'js' => 'text/javascript', 
  37.     '<a href="http://www.phpfensi.com/cssdiv/css.html" class="anchor" target="_blank">css</a>' => 'text/css', 
  38.     'rtf' => 'text/rtf', 
  39.     'rtfd' => 'text/rtfd', 
  40.     'py' => 'text/x-python', 
  41.     'java' => 'text/x-java-source', 
  42.     'rb' => 'text/x-ruby', 
  43.     'sh' => 'text/x-shellscript', 
  44.     'pl' => 'text/x-perl', 
  45.     'sql' => 'text/x-sql', 
  46.     //应用 
  47.     'exe' => 'application/octet-stream', 
  48.     'doc' => 'application/vnd.ms-word', 
  49.     'docx' => 'application/vnd.ms-word', 
  50.     'xls' => 'application/vnd.ms-excel', 
  51.     'ppt' => 'application/vnd.ms-powerpoint', 
  52.     'pps' => 'application/vnd.ms-powerpoint', 
  53.     'pdf' => 'application/pdf', 
  54.     'xml' => 'application/xml', 
  55.     //音频 
  56.     'mp3' => 'audio/mpeg', 
  57.     'mid' => 'audio/midi', 
  58.     'ogg' => 'audio/ogg', 
  59.     'mp4a' => 'audio/mp4', 
  60.     'wav' => 'audio/wav', 
  61.     'wma' =&ggt; 'audio/x-ms-wma', 
  62.     //视频 
  63.     'avi' => 'video/x-msvideo', 
  64.     'dv' => 'video/x-dv', 
  65.     'mp4' => 'video/mp4', 
  66.     'mpeg' => 'video/mpeg', 
  67.     'mpg' => 'video/mpeg', 
  68.     'mov' => 'video/quicktime', 
  69.     'wm' => 'video/x-ms-wmv', 
  70.     'flv' => 'video/x-flv', 
  71.     'mkv' => 'video/x-matroska' 
  72.    ); 
  73.  } 
  74.  /** 
  75.   * 上传函数 
  76.   * @param string : 表单元素的name 值 
  77.   * @return [type] 
  78.   */ 
  79.  public function upload( $txtName = '' ) 
  80.  { 
  81.   $this->_file = $_FILES[$txtName]; 
  82.   if( $this->_file['error'] == 0){ 
  83.    $fileType = end( explode('.', $this->_file['name'] )); 
  84.    $allowType = array(); 
  85.    foreach( $this->_allowType as $item=>$value ){ 
  86.     $allowType[] = $item; 
  87.    } 
  88.    if( !in_array($fileType, $allowType)){ 
  89.     die('上传的文件格式不正确!'); 
  90.    }else{ 
  91.     if(move_uploaded_file($this->file['tmp_name'], ($this->path).$this->file['name'])) 
  92.      { 
  93.       echo "<script>alert('上传成功!')</script>"; 
  94.      } 
  95.     else 
  96.      { 
  97.       echo "<script>alert('上传失败!');</script>"; 
  98.      } 
  99.    } 
  100.   
  101.   }else{ 
  102.    //没有正确上传 
  103.    switch ($this->file['error']){ 
  104.     case 1: 
  105.      die('文件大小超过系统限制。'); 
  106.      break; 
  107.     case 2: 
  108.      die('文件大小超过预定义限制。'); 
  109.      break; 
  110.     case 3: 
  111.      die('文件为完全上传。'); 
  112.      break; 
  113.     case 4: 
  114.      die('未上传任何文件。'); 
  115.      break; 
  116.     default: 
  117.      die('上传出错'); 
  118.      break; 
  119.    } 
  120.   } 
  121.  } 
  122.  //end upload 
  123. } 

Tags: 常用 文件

分享到: