Jelajahi Sumber

Add: setMine方法用户自行添加文件及类型

Jinhui Zhu 4 tahun lalu
induk
melakukan
5d0d6cda8f
2 mengubah file dengan 265 tambahan dan 214 penghapusan
  1. 241 0
      src/Config/Mine.php
  2. 24 214
      src/Library/Upload.php

+ 241 - 0
src/Config/Mine.php

@@ -0,0 +1,241 @@
+<?php
+
+namespace Qii\Config;
+
+class Mine
+{
+    public $mine = array(
+        '*' => 'application/octet-stream',
+        '323' => 'text/h323',
+        '3gp' => 'video/3gp',
+        'acx' => 'application/internet-property-stream',
+        'ai' => 'application/postscript',
+        'aif' => 'audio/x-aiff',
+        'aifc' => 'audio/x-aiff',
+        'aiff' => 'audio/x-aiff',
+        'asf' => 'video/x-ms-asf',
+        'asr' => 'video/x-ms-asf',
+        'asx' => 'video/x-ms-asf',
+        'au' => 'audio/basic',
+        'avi' => 'video/x-msvideo',
+        'axs' => 'application/olescript',
+        'bas' => 'text/plain',
+        'bcpio' => 'application/x-bcpio',
+        'bin' => 'application/octet-stream',
+        'bmp' => 'image/bmp',
+        'c' => 'text/plain',
+        'cat' => 'application/vnd.ms-pkiseccat',
+        'cdf' => 'application/x-cdf',
+        'cer' => 'application/x-x509-ca-cert',
+        'class' => 'application/octet-stream',
+        'clp' => 'application/x-msclip',
+        'cmx' => 'image/x-cmx',
+        'cod' => 'image/cis-cod',
+        'cpio' => 'application/x-cpio',
+        'crd' => 'application/x-mscardfile',
+        'crl' => 'application/pkix-crl',
+        'crt' => 'application/x-x509-ca-cert',
+        'csh' => 'application/x-csh',
+        'css' => 'text/css',
+        'dcr' => 'application/x-director',
+        'der' => 'application/x-x509-ca-cert',
+        'dir' => 'application/x-director',
+        'dll' => 'application/x-msdownload',
+        'dms' => 'application/octet-stream',
+        'doc' => 'application/msword',
+        'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+        'dot' => 'application/msword',
+        'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
+        'dvi' => 'application/x-dvi',
+        'dxr' => 'application/x-director',
+        'eps' => 'application/postscript',
+        'etx' => 'text/x-setext',
+        'evy' => 'application/envoy',
+        'exe' => 'application/octet-stream',
+        'fif' => 'application/fractals',
+        'flr' => 'x-world/x-vrml',
+        'gif' => 'image/gif',
+        'gtar' => 'application/x-gtar',
+        'gz' => 'application/x-gzip',
+        'h' => 'text/plain',
+        'hdf' => 'application/x-hdf',
+        'hlp' => 'application/winhlp',
+        'hqx' => 'application/mac-binhex40',
+        'hta' => 'application/hta',
+        'htc' => 'text/x-component',
+        'htm' => 'text/html',
+        'html' => 'text/html',
+        'htt' => 'text/webviewhtml',
+        'ico' => 'image/x-icon',
+        'ief' => 'image/ief',
+        'iii' => 'application/x-iphone',
+        'ins' => 'application/x-internet-signup',
+        'isp' => 'application/x-internet-signup',
+        'jfif' => 'image/pipeg',
+        'jpe' => 'image/jpeg',
+        'jpeg' => 'image/jpeg',
+        'jpg' => 'image/jpeg',
+        'jpg_1' => 'image/jpg',
+        'png' => 'image/png',
+        'js' => 'application/x-javascript',
+        'latex' => 'application/x-latex',
+        'lha' => 'application/octet-stream',
+        'lsf' => 'video/x-la-asf',
+        'lsx' => 'video/x-la-asf',
+        'lzh' => 'application/octet-stream',
+        'm13' => 'application/x-msmediaview',
+        'm14' => 'application/x-msmediaview',
+        'm3u' => 'audio/x-mpegurl',
+        'man' => 'application/x-troff-man',
+        'mdb' => 'application/x-msaccess',
+        'me' => 'application/x-troff-me',
+        'mht' => 'message/rfc822',
+        'mhtml' => 'message/rfc822',
+        'mid' => 'audio/mid',
+        'mny' => 'application/x-msmoney',
+        'mov' => 'video/quicktime',
+        'movie' => 'video/x-sgi-movie',
+        'mp2' => 'video/mpeg',
+        'mp3' => 'audio/mpeg',
+        'mp4' => 'video/mp4',
+        'webmp4' => 'video/webmp4',
+        'mpa' => 'video/mpeg',
+        'mpe' => 'video/mpeg',
+        'mpeg' => 'video/mpeg',
+        'mpg' => 'video/mpeg',
+        'mpp' => 'application/vnd.ms-project',
+        'mpv2' => 'video/mpeg',
+        'ms' => 'application/x-troff-ms',
+        'mvb' => 'application/x-msmediaview',
+        'nws' => 'message/rfc822',
+        'oda' => 'application/oda',
+        'p10' => 'application/pkcs10',
+        'p12' => 'application/x-pkcs12',
+        'p7b' => 'application/x-pkcs7-certificates',
+        'p7c' => 'application/x-pkcs7-mime',
+        'p7m' => 'application/x-pkcs7-mime',
+        'p7r' => 'application/x-pkcs7-certreqresp',
+        'p7s' => 'application/x-pkcs7-signature',
+        'pbm' => 'image/x-portable-bitmap',
+        'pdf' => 'application/pdf',
+        'pfx' => 'application/x-pkcs12',
+        'pgm' => 'image/x-portable-graymap',
+        'pko' => 'application/ynd.ms-pkipko',
+        'pma' => 'application/x-perfmon',
+        'pmc' => 'application/x-perfmon',
+        'pml' => 'application/x-perfmon',
+        'pmr' => 'application/x-perfmon',
+        'pmw' => 'application/x-perfmon',
+        'pnm' => 'image/x-portable-anymap',
+        'pot,' => 'application/vnd.ms-powerpoint',
+        'potx,' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
+        'ppm' => 'image/x-portable-pixmap',
+        'pps' => 'application/vnd.ms-powerpoint',
+        'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshowt',
+        'ppt' => 'application/vnd.ms-powerpoint',
+        'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
+        'prf' => 'application/pics-rules',
+        'ps' => 'application/postscript',
+        'pub' => 'application/x-mspublisher',
+        'qt' => 'video/quicktime',
+        'ra' => 'audio/x-pn-realaudio',
+        'ram' => 'audio/x-pn-realaudio',
+        'ras' => 'image/x-cmu-raster',
+        'rgb' => 'image/x-rgb',
+        'rmi' => 'audio/mid',
+        'roff' => 'application/x-troff',
+        'rtf' => 'application/rtf',
+        'rtx' => 'text/richtext',
+        'scd' => 'application/x-msschedule',
+        'sct' => 'text/scriptlet',
+        'setpay' => 'application/set-payment-initiation',
+        'setreg' => 'application/set-registration-initiation',
+        'sh' => 'application/x-sh',
+        'shar' => 'application/x-shar',
+        'sit' => 'application/x-stuffit',
+        'snd' => 'audio/basic',
+        'spc' => 'application/x-pkcs7-certificates',
+        'spl' => 'application/futuresplash',
+        'src' => 'application/x-wais-source',
+        'sst' => 'application/vnd.ms-pkicertstore',
+        'stl' => 'application/vnd.ms-pkistl',
+        'stm' => 'text/html',
+        'svg' => 'image/svg+xml',
+        'sv4cpio' => 'application/x-sv4cpio',
+        'sv4crc' => 'application/x-sv4crc',
+        'swf' => 'application/x-shockwave-flash',
+        't' => 'application/x-troff',
+        'tar' => 'application/x-tar',
+        'tcl' => 'application/x-tcl',
+        'tex' => 'application/x-tex',
+        'texi' => 'application/x-texinfo',
+        'texinfo' => 'application/x-texinfo',
+        'tgz' => 'application/x-compressed',
+        'tif' => 'image/tiff',
+        'tiff' => 'image/tiff',
+        'tr' => 'application/x-troff',
+        'trm' => 'application/x-msterminal',
+        'tsv' => 'text/tab-separated-values',
+        'txt' => 'text/plain',
+        'uls' => 'text/iuls',
+        'ustar' => 'application/x-ustar',
+        'vcf' => 'text/x-vcard',
+        'vrml' => 'x-world/x-vrml',
+        'wav' => 'audio/x-wav',
+        'wcm' => 'application/vnd.ms-works',
+        'wdb' => 'application/vnd.ms-works',
+        'wks' => 'application/vnd.ms-works',
+        'wmf' => 'application/x-msmetafile',
+        'wps' => 'application/vnd.ms-works',
+        'wri' => 'application/x-mswrite',
+        'wrl' => 'x-world/x-vrml',
+        'wrz' => 'x-world/x-vrml',
+        'xaf' => 'x-world/x-vrml',
+        'xbm' => 'image/x-xbitmap',
+        'xla' => 'application/vnd.ms-excel',
+        'xlc' => 'application/vnd.ms-excel',
+        'xlm' => 'application/vnd.ms-excel',
+        'xls' => 'application/vnd.ms-excel',
+        'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+        'xlt' => 'application/vnd.ms-excel',
+        'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
+        'xlw' => 'application/vnd.ms-excel',
+        'xof' => 'x-world/x-vrml',
+        'xpm' => 'image/x-xpixmap',
+        'xwd' => 'image/x-xwindowdump',
+        'z' => 'application/x-compress',
+        'zip' => 'application/zip',
+        'epub' => 'application/epub+zip',
+        'mobi' => 'application/octet-stream',
+        'flac' => 'audio/flac',
+        'ape' => 'audio/ape',
+    );
+
+    public function __construct()
+    {
+    }
+
+    /**
+     * 通过 $this->get{对应的文件类型} 来获取mineType,或者getAll获取所有的
+     *
+     * @param $name
+     * @return array|mixed|string
+     */
+    public function __get($name)
+    {
+        $name = strtolower(substr($name, 3));
+        if ($name == 'all') {
+            return $this->mine;
+        }
+
+        if (isset($this->mine[$name])) {
+            return $this->mine[$name];
+        }
+        return '';
+    }
+
+    public function __call($name, $arguments)
+    {
+        return $this->{$name};
+    }
+}

+ 24 - 214
src/Library/Upload.php

@@ -2,6 +2,8 @@
 
 namespace Qii\Library;
 
+use \Qii\Config\Mine;
+
 /**
  * Library upload_library
  * @author Jinhui Zhu <jinhui.zhu@live.cn>
@@ -33,217 +35,13 @@ class Upload
         7 => '文件写入失败',
         8 => '上传被其它扩展中断'
     );
-    public $mine = array(
-        '*' => 'application/octet-stream',
-        '323' => 'text/h323',
-        '3gp' => 'video/3gp',
-        'acx' => 'application/internet-property-stream',
-        'ai' => 'application/postscript',
-        'aif' => 'audio/x-aiff',
-        'aifc' => 'audio/x-aiff',
-        'aiff' => 'audio/x-aiff',
-        'asf' => 'video/x-ms-asf',
-        'asr' => 'video/x-ms-asf',
-        'asx' => 'video/x-ms-asf',
-        'au' => 'audio/basic',
-        'avi' => 'video/x-msvideo',
-        'axs' => 'application/olescript',
-        'bas' => 'text/plain',
-        'bcpio' => 'application/x-bcpio',
-        'bin' => 'application/octet-stream',
-        'bmp' => 'image/bmp',
-        'c' => 'text/plain',
-        'cat' => 'application/vnd.ms-pkiseccat',
-        'cdf' => 'application/x-cdf',
-        'cer' => 'application/x-x509-ca-cert',
-        'class' => 'application/octet-stream',
-        'clp' => 'application/x-msclip',
-        'cmx' => 'image/x-cmx',
-        'cod' => 'image/cis-cod',
-        'cpio' => 'application/x-cpio',
-        'crd' => 'application/x-mscardfile',
-        'crl' => 'application/pkix-crl',
-        'crt' => 'application/x-x509-ca-cert',
-        'csh' => 'application/x-csh',
-        'css' => 'text/css',
-        'dcr' => 'application/x-director',
-        'der' => 'application/x-x509-ca-cert',
-        'dir' => 'application/x-director',
-        'dll' => 'application/x-msdownload',
-        'dms' => 'application/octet-stream',
-        'doc' => 'application/msword',
-        'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
-        'dot' => 'application/msword',
-        'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
-        'dvi' => 'application/x-dvi',
-        'dxr' => 'application/x-director',
-        'eps' => 'application/postscript',
-        'etx' => 'text/x-setext',
-        'evy' => 'application/envoy',
-        'exe' => 'application/octet-stream',
-        'fif' => 'application/fractals',
-        'flr' => 'x-world/x-vrml',
-        'gif' => 'image/gif',
-        'gtar' => 'application/x-gtar',
-        'gz' => 'application/x-gzip',
-        'h' => 'text/plain',
-        'hdf' => 'application/x-hdf',
-        'hlp' => 'application/winhlp',
-        'hqx' => 'application/mac-binhex40',
-        'hta' => 'application/hta',
-        'htc' => 'text/x-component',
-        'htm' => 'text/html',
-        'html' => 'text/html',
-        'htt' => 'text/webviewhtml',
-        'ico' => 'image/x-icon',
-        'ief' => 'image/ief',
-        'iii' => 'application/x-iphone',
-        'ins' => 'application/x-internet-signup',
-        'isp' => 'application/x-internet-signup',
-        'jfif' => 'image/pipeg',
-        'jpe' => 'image/jpeg',
-        'jpeg' => 'image/jpeg',
-        'jpg' => 'image/jpeg',
-        'jpg_1' => 'image/jpg',
-        'png' => 'image/png',
-        'js' => 'application/x-javascript',
-        'latex' => 'application/x-latex',
-        'lha' => 'application/octet-stream',
-        'lsf' => 'video/x-la-asf',
-        'lsx' => 'video/x-la-asf',
-        'lzh' => 'application/octet-stream',
-        'm13' => 'application/x-msmediaview',
-        'm14' => 'application/x-msmediaview',
-        'm3u' => 'audio/x-mpegurl',
-        'man' => 'application/x-troff-man',
-        'mdb' => 'application/x-msaccess',
-        'me' => 'application/x-troff-me',
-        'mht' => 'message/rfc822',
-        'mhtml' => 'message/rfc822',
-        'mid' => 'audio/mid',
-        'mny' => 'application/x-msmoney',
-        'mov' => 'video/quicktime',
-        'movie' => 'video/x-sgi-movie',
-        'mp2' => 'video/mpeg',
-        'mp3' => 'audio/mpeg',
-        'mp4' => 'video/mp4',
-        'webmp4' => 'video/webmp4',
-        'mpa' => 'video/mpeg',
-        'mpe' => 'video/mpeg',
-        'mpeg' => 'video/mpeg',
-        'mpg' => 'video/mpeg',
-        'mpp' => 'application/vnd.ms-project',
-        'mpv2' => 'video/mpeg',
-        'ms' => 'application/x-troff-ms',
-        'mvb' => 'application/x-msmediaview',
-        'nws' => 'message/rfc822',
-        'oda' => 'application/oda',
-        'p10' => 'application/pkcs10',
-        'p12' => 'application/x-pkcs12',
-        'p7b' => 'application/x-pkcs7-certificates',
-        'p7c' => 'application/x-pkcs7-mime',
-        'p7m' => 'application/x-pkcs7-mime',
-        'p7r' => 'application/x-pkcs7-certreqresp',
-        'p7s' => 'application/x-pkcs7-signature',
-        'pbm' => 'image/x-portable-bitmap',
-        'pdf' => 'application/pdf',
-        'pfx' => 'application/x-pkcs12',
-        'pgm' => 'image/x-portable-graymap',
-        'pko' => 'application/ynd.ms-pkipko',
-        'pma' => 'application/x-perfmon',
-        'pmc' => 'application/x-perfmon',
-        'pml' => 'application/x-perfmon',
-        'pmr' => 'application/x-perfmon',
-        'pmw' => 'application/x-perfmon',
-        'pnm' => 'image/x-portable-anymap',
-        'pot,' => 'application/vnd.ms-powerpoint',
-        'potx,' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
-        'ppm' => 'image/x-portable-pixmap',
-        'pps' => 'application/vnd.ms-powerpoint',
-        'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshowt',
-        'ppt' => 'application/vnd.ms-powerpoint',
-        'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
-        'prf' => 'application/pics-rules',
-        'ps' => 'application/postscript',
-        'pub' => 'application/x-mspublisher',
-        'qt' => 'video/quicktime',
-        'ra' => 'audio/x-pn-realaudio',
-        'ram' => 'audio/x-pn-realaudio',
-        'ras' => 'image/x-cmu-raster',
-        'rgb' => 'image/x-rgb',
-        'rmi' => 'audio/mid',
-        'roff' => 'application/x-troff',
-        'rtf' => 'application/rtf',
-        'rtx' => 'text/richtext',
-        'scd' => 'application/x-msschedule',
-        'sct' => 'text/scriptlet',
-        'setpay' => 'application/set-payment-initiation',
-        'setreg' => 'application/set-registration-initiation',
-        'sh' => 'application/x-sh',
-        'shar' => 'application/x-shar',
-        'sit' => 'application/x-stuffit',
-        'snd' => 'audio/basic',
-        'spc' => 'application/x-pkcs7-certificates',
-        'spl' => 'application/futuresplash',
-        'src' => 'application/x-wais-source',
-        'sst' => 'application/vnd.ms-pkicertstore',
-        'stl' => 'application/vnd.ms-pkistl',
-        'stm' => 'text/html',
-        'svg' => 'image/svg+xml',
-        'sv4cpio' => 'application/x-sv4cpio',
-        'sv4crc' => 'application/x-sv4crc',
-        'swf' => 'application/x-shockwave-flash',
-        't' => 'application/x-troff',
-        'tar' => 'application/x-tar',
-        'tcl' => 'application/x-tcl',
-        'tex' => 'application/x-tex',
-        'texi' => 'application/x-texinfo',
-        'texinfo' => 'application/x-texinfo',
-        'tgz' => 'application/x-compressed',
-        'tif' => 'image/tiff',
-        'tiff' => 'image/tiff',
-        'tr' => 'application/x-troff',
-        'trm' => 'application/x-msterminal',
-        'tsv' => 'text/tab-separated-values',
-        'txt' => 'text/plain',
-        'uls' => 'text/iuls',
-        'ustar' => 'application/x-ustar',
-        'vcf' => 'text/x-vcard',
-        'vrml' => 'x-world/x-vrml',
-        'wav' => 'audio/x-wav',
-        'wcm' => 'application/vnd.ms-works',
-        'wdb' => 'application/vnd.ms-works',
-        'wks' => 'application/vnd.ms-works',
-        'wmf' => 'application/x-msmetafile',
-        'wps' => 'application/vnd.ms-works',
-        'wri' => 'application/x-mswrite',
-        'wrl' => 'x-world/x-vrml',
-        'wrz' => 'x-world/x-vrml',
-        'xaf' => 'x-world/x-vrml',
-        'xbm' => 'image/x-xbitmap',
-        'xla' => 'application/vnd.ms-excel',
-        'xlc' => 'application/vnd.ms-excel',
-        'xlm' => 'application/vnd.ms-excel',
-        'xls' => 'application/vnd.ms-excel',
-        'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
-        'xlt' => 'application/vnd.ms-excel',
-        'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
-        'xlw' => 'application/vnd.ms-excel',
-        'xof' => 'x-world/x-vrml',
-        'xpm' => 'image/x-xpixmap',
-        'xwd' => 'image/x-xwindowdump',
-        'z' => 'application/x-compress',
-        'zip' => 'application/zip',
-        'epub' => 'application/epub+zip',
-        'mobi' => 'application/octet-stream',
-        'flac' => 'audio/flac',
-        'ape' => 'audio/ape',
-    );
+    public $mine = array();
     public $size = 0;
     public static $fileHash = array();
     public function __construct()
     {
-    
+        $mine = new Mine();
+        $this->mine = $mine->getAll();
     }
     
     
@@ -256,6 +54,18 @@ class Upload
         $this->allowed = $array;
     }
 
+    /**
+     * 添加mine类型
+     *
+     * @param $mine {"avi": "application/avi"}
+     * @return array
+     */
+    public function setMine($mine)
+    {
+        $this->mine = array_merge($this->mine, $mine);
+        return $this->mine;
+    }
+
     /**
      * @param int $size default 1024*1024
      */
@@ -749,11 +559,11 @@ class Upload
     
     /**
      *
-     * 剪切片到指定大小
-     * @param String $bigImg 原始
-     * @param Int $width 
-     * @param Int $height高
-     * @param String $smallImg 縮放後保存的圖
+     * 剪切片到指定大小
+     * @param String $bigImg 原始
+     * @param Int $width 
+     * @param Int $height 
+     * @param String $smallImg 缩放后保存的图
      */
     public function imgCutSmall($bigImg, $smallImg, $width, $height)
     {
@@ -762,8 +572,8 @@ class Upload
         }
         ini_set("memory_limit", "128M");
         //大图文件地址,缩略宽,缩略高,小图地址
-        $imgage = getimagesize($bigImg);//获取大图信息
-        switch ($imgage[2]) {//判断图像类型
+        $image = getimagesize($bigImg);//获取大图信息
+        switch ($image[2]) {//判断图像类型
             case 1:
                 $im = imagecreatefromgif($bigImg);
                 break;