PHP에서 일반적인 파일 업로드 클래스를 구현하는 방법을 설명하는 예

巴扎黑
풀어 주다: 2023-03-15 19:48:01
원래의
1472명이 탐색했습니다.

다음 편집기는 PHP에서 일반적인 파일 업로드 클래스를 구현하는 예를 보여줍니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리도록 하겠습니다. 에디터를 따라가며 함께 살펴볼까요

더 이상 말도 안 되는 소리는 그만하고 다음 코드로 가세요:


<?php
/**
 * 上传文件类
 * @param _path : 服务器文件存放路径
 * @param _allowType : 允许上传的文件类型和所对应的MIME
 * @param _file : 上传的文件信息
 */
class Upload{

 private $_path;
 private $_allowType;
 private $_file;
 /**
  * 构造函数
  * @param string : 服务器上存放上传文件的路径
  */
 function __construct( $path = &#39;&#39; )
 {
  $this->_path = $path;
  $this->_allowType = array(
    // images
    &#39;bmp&#39; => &#39;image/x-ms-bmp&#39;,
    &#39;jpg&#39; => &#39;image/jpeg&#39;,
    &#39;jpeg&#39; => &#39;image/jpeg&#39;,
    &#39;gif&#39; => &#39;image/gif&#39;,
    &#39;png&#39; => &#39;image/png&#39;,
    &#39;tif&#39; => &#39;image/tiff&#39;,
    &#39;tiff&#39; => &#39;image/tiff&#39;,
    &#39;tga&#39; => &#39;image/x-targa&#39;,
    &#39;psd&#39; => &#39;image/vnd.adobe.photoshop&#39;,
    //文本
    &#39;txt&#39; => &#39;text/plain&#39;,
    &#39;php&#39; => &#39;text/x-php&#39;,
    &#39;html&#39; => &#39;text/html&#39;,
    &#39;htm&#39; => &#39;text/html&#39;,
    &#39;js&#39; => &#39;text/javascript&#39;,
    &#39;css&#39; => &#39;text/css&#39;,
    &#39;rtf&#39; => &#39;text/rtf&#39;,
    &#39;rtfd&#39; => &#39;text/rtfd&#39;,
    &#39;py&#39; => &#39;text/x-python&#39;,
    &#39;java&#39; => &#39;text/x-java-source&#39;,
    &#39;rb&#39; => &#39;text/x-ruby&#39;,
    &#39;sh&#39; => &#39;text/x-shellscript&#39;,
    &#39;pl&#39; => &#39;text/x-perl&#39;,
    &#39;sql&#39; => &#39;text/x-sql&#39;,
    //应用
    &#39;exe&#39; => &#39;application/octet-stream&#39;,
    &#39;doc&#39; => &#39;application/vnd.ms-word&#39;,
    &#39;docx&#39; => &#39;application/vnd.ms-word&#39;,
    &#39;xls&#39; => &#39;application/vnd.ms-excel&#39;,
    &#39;ppt&#39; => &#39;application/vnd.ms-powerpoint&#39;,
    &#39;pps&#39; => &#39;application/vnd.ms-powerpoint&#39;,
    &#39;pdf&#39; => &#39;application/pdf&#39;,
    &#39;xml&#39; => &#39;application/xml&#39;,
    //音频
    &#39;mp3&#39; => &#39;audio/mpeg&#39;,
    &#39;mid&#39; => &#39;audio/midi&#39;,
    &#39;ogg&#39; => &#39;audio/ogg&#39;,
    &#39;mp4a&#39; => &#39;audio/mp4&#39;,
    &#39;wav&#39; => &#39;audio/wav&#39;,
    &#39;wma&#39; => &#39;audio/x-ms-wma&#39;,
    //视频
    &#39;avi&#39; => &#39;video/x-msvideo&#39;,
    &#39;dv&#39; => &#39;video/x-dv&#39;,
    &#39;mp4&#39; => &#39;video/mp4&#39;,
    &#39;mpeg&#39; => &#39;video/mpeg&#39;,
    &#39;mpg&#39; => &#39;video/mpeg&#39;,
    &#39;mov&#39; => &#39;video/quicktime&#39;,
    &#39;wm&#39; => &#39;video/x-ms-wmv&#39;,
    &#39;flv&#39; => &#39;video/x-flv&#39;,
    &#39;mkv&#39; => &#39;video/x-matroska&#39;
   );
 }
 /**
  * 上传函数
  * @param string : 表单元素的name 值
  * @return [type]
  */
 public function upload( $txtName = &#39;&#39; )
 {
  $this->_file = $_FILES[$txtName];
  if( $this->_file[&#39;error&#39;] == 0){
   $fileType = end( explode(&#39;.&#39;, $this->_file[&#39;name&#39;] ));
   $allowType = array();
   foreach( $this->_allowType as $item=>$value ){
    $allowType[] = $item;
   }
   if( !in_array($fileType, $allowType)){
    die(&#39;上传的文件格式不正确!&#39;);
   }else{
    if(move_uploaded_file($this->file[&#39;tmp_name&#39;], ($this->path).$this->file[&#39;name&#39;]))
     {
      echo "<script>alert(&#39;上传成功!&#39;)</script>";
     }
    else
     {
      echo "<script>alert(&#39;上传失败!&#39;);</script>";
     }
   }

  }else{
   //没有正确上传
   switch ($this->file[&#39;error&#39;]){
    case 1:
     die(&#39;文件大小超过系统限制。&#39;);
     break;
    case 2:
     die(&#39;文件大小超过预定义限制。&#39;);
     break;
    case 3:
     die(&#39;文件为完全上传。&#39;);
     break;
    case 4:
     die(&#39;未上传任何文件。&#39;);
     break;
    default:
     die(&#39;上传出错&#39;);
     break;
   }
  }
 }
 //end upload
}
로그인 후 복사

위 내용은 PHP에서 일반적인 파일 업로드 클래스를 구현하는 방법을 설명하는 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿