Heim Backend-Entwicklung PHP-Tutorial 又花了半天时间写了个php上传类解决方法

又花了半天时间写了个php上传类解决方法

Jun 13, 2016 am 10:23 AM
gt private return this

又花了半天时间写了个php上传类
刚学PHP没多久,为了更好的练习及熟悉PHP,自己花了大半天写了个php上传类,在这里做个笔记,欢迎朋友们对这个类做修改及优化。

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//up_class.php<?phpclass UpFile{    private $inputFile;    //文件域名    private $tmpName;    //临时文件名    private $tmpPath;    //临时文件路径    private $savePath;    //保存路径    private $reType;    //返回类型    private $upMaxSize;    //上传文件大小限制    private $allowFile; //允许上传的文件    private $upFolder; //要上传到的文件夹    private $isReName;    //是否要将上传的文件重命名    private $endFileName; //最终保存的文件名    public  $fileSize;    //文件大小    public  $fileType;    //文件类型    public  $errorInt;    //上传失败及错误原因            /**     * @param      * $inputFile(表单内文件域名称);</br>     * $upFolder(保存到服务器的文件夹);     * $isRename(对上传文件重命名,值 有 y|n );     * $reType(上传成功后返回的值:n是返回文件名,pn:返回路径和文件名,j:返回js[待扩展]);     * $upExt(要上传的文件分类,因为在不同的表单要限制不同的上传文件类型,比如 A表单只能上传图片,B表单只能上伟压缩包);     * $maxSize(限制上传的文件大小)     * @author:256kb     * @2012-5-1     */    public function __construct($inputFile , $upExt = 0 , $reType = 'pn' , $upFolder = 'upload/' , $isRename = 'y' , $maxSize = 10485760){        $this->inputFile = $inputFile;        $this->reType = $reType;        $this->upMaxSize = $maxSize;        $this->allowFile = $upExt;        $this->upFolder = $upFolder;        $this->isReName = $isRename;        //$this->errorInt = -1;    }        public function upFile(){        $_file_arr = $_FILES[$this->inputFile];        $this->errorInt = $_file_arr['error'];        if(is_uploaded_file($_file_arr['tmp_name'])){            if($_file_arr['tmp_name']){                $this->tmpName = $_file_arr['name'];                $this->upMaxSize = $_file_arr['size'];                $this->fileType = $_file_arr['type'];                $this->tmpPath = $_file_arr['tmp_name'];                $this->fileSize = $_file_arr['size'];                if($this->upMaxSize > $this->upMaxSize){                    $this->errorInt = 6    ;    //大小超出网站限制                }                                if(!$this->isAllow()){                    $this->errorInt = 8    ;    //系统不允许此类型文件                }                                if($this->isReName=='y'){                    $this->savePath = $this->upFolder.$this->getFolder().'/'.$this->getNewName() ;                    $this->endFileName = $this->getNewName();                }else{                    $this->savePath = $this->upFolder.$this->getFolder().'/'.$this->tmpName ;                    $this->endFileName = $this->tmpName;                }                //echo $this->errorInt;                if(!$this->errorInt >= 1){                    move_uploaded_file($this->tmpPath,$this->savePath);                }                            }        }    }        public function getFileUrl(){        switch($this->reType){            case 'n':                return $this->endFileName;            break;            case 'pn':                return $this->savePath;            break;            case 'js':                return "<script language='\"javascript\"' type='\"text/javascript\"'>window.parent.LoadAttach('".$this->savePath."');</script>";            break;            default:                return $this->savePath;        }    }        //获得新文件名    public function getNewName(){        return substr($this->tmpName,1,strrpos($this->tmpName,".")-1).'_'.mktime().'.'.$this->getFileExt();    }        public function upStatus(){        //echo $this->errorInt;        switch ($this->errorInt){            case 1:                return '超过了文件大小php.ini中限制大小';            break;            case 2:                return '超过了文件大小MAX_FILE_SIZE 选项指定的值';            break;            case 3:                return '文件只有部分被上传';            break;            case 4:                return '没有文件被上传';            break;            case 5:                return '上传文件大小为0';            break;            case 6:                return '大小超出网站限制';            break;            case 7:                return '网站内没有指定这种上传类型';            break;            case 8:                return '系统不允许此类型文件';            case 9:                return '创建目录失败!';            break;        }    }        private function isAllow(){        $allow = array(                0 => array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png','application/x-zip-compressed','application/octet-stream'),                1 => array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png'),                2 => array('application/x-zip-compressed','application/octet-stream'),                3 => array('','',''),                4 => array('','','')                );        if($this->allowFile > count($allow)-1){            $this->errorInt = 7;    //网站内没有指定这种上传类型        }else{            if(in_array($this->fileType, $allow[$this->allowFile])){                return true;            }else{                return false;            }        }    }        public function getFileExt(){    //获得文件扩展名        return strtolower(substr($this->tmpName,strrpos($this->tmpName,".")+1));    }        private function getFolder(){    //获得并自动创建相应文件夹        if(strpos('|rar|zip|7z|iso|','|'.$this->getFileExt().'|')>=0){            $_folder = 'rar';        }elseif(strpos('|gif|jpeg|jpg|png|bmp|pjpeg|psd|','|'.$this->getFileExt().'|')>=0){            $_folder = 'img';        }elseif(strpos('|rm|rmvb|avi|mp4|swf|flv|wmv|','|'.$this->getFileExt().'|')>=0){            $_folder = 'vide';        }elseif(strpos('|doc|txt|xls|mdb||','|'.$this->getFileExt().'|')>=0){            $_folder = 'doc';        }else{            $_folder = 'other';        }        if(!file_exists($this->upFolder.$_folder)){            if(!mkdir($this->upFolder.$_folder)){                $this->errorInt = 9;    //创建目录失败            }        }        return $_folder;    }    }<div class="clear">
                 
              
              
        
            </div>
Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Dec 29, 2023 pm 02:27 PM

Viele Benutzer werden sich bei der Auswahl von Smartwatches für die Marke Huawei entscheiden. Viele Benutzer sind neugierig auf den Unterschied zwischen Huawei GT3pro und GT4. Was sind die Unterschiede zwischen Huawei GT3pro und GT4? 1. Aussehen GT4: 46 mm und 41 mm, das Material ist Glasspiegel + Edelstahlgehäuse + hochauflösende Faserrückschale. GT3pro: 46,6 mm und 42,9 mm, das Material ist Saphirglas + Titangehäuse/Keramikgehäuse + Keramikrückschale 2. Gesundes GT4: Mit dem neuesten Huawei Truseen5.5+-Algorithmus werden die Ergebnisse genauer. GT3pro: EKG-Elektrokardiogramm sowie Blutgefäß und Sicherheit hinzugefügt

Detaillierte Erläuterung der Verwendung von Return in der C-Sprache Detaillierte Erläuterung der Verwendung von Return in der C-Sprache Oct 07, 2023 am 10:58 AM

Die Verwendung von return in der C-Sprache ist: 1. Für Funktionen, deren Rückgabewerttyp ungültig ist, können Sie die Rückgabeanweisung verwenden, um die Ausführung der Funktion vorzeitig zu beenden. 2. Für Funktionen, deren Rückgabewerttyp nicht ungültig ist, ist die Funktion von Die Return-Anweisung dient dazu, die Ausführung der Funktion zu beenden. 3. Beenden Sie die Ausführung der Funktion vorzeitig wenn die Funktion keinen Wert zurückgibt.

Fix: Snipping-Tool funktioniert unter Windows 11 nicht Fix: Snipping-Tool funktioniert unter Windows 11 nicht Aug 24, 2023 am 09:48 AM

Warum das Snipping-Tool unter Windows 11 nicht funktioniert Das Verständnis der Grundursache des Problems kann dabei helfen, die richtige Lösung zu finden. Hier sind die häufigsten Gründe, warum das Snipping Tool möglicherweise nicht ordnungsgemäß funktioniert: Focus Assistant ist aktiviert: Dies verhindert, dass das Snipping Tool geöffnet wird. Beschädigte Anwendung: Wenn das Snipping-Tool beim Start abstürzt, ist es möglicherweise beschädigt. Veraltete Grafiktreiber: Inkompatible Treiber können das Snipping-Tool beeinträchtigen. Störungen durch andere Anwendungen: Andere laufende Anwendungen können mit dem Snipping Tool in Konflikt geraten. Das Zertifikat ist abgelaufen: Ein Fehler während des Upgrade-Vorgangs kann zu diesem Problem führen. Diese einfache Lösung ist für die meisten Benutzer geeignet und erfordert keine besonderen technischen Kenntnisse. 1. Aktualisieren Sie Windows- und Microsoft Store-Apps

Wie ist die Ausführungsreihenfolge von Return- und Final-Anweisungen in Java? Wie ist die Ausführungsreihenfolge von Return- und Final-Anweisungen in Java? Apr 25, 2023 pm 07:55 PM

Quellcode: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}# Ausgabe Die Ausgabe des obigen Codes kann einfach zu dem Schluss kommen: return wird ausgeführt, bevor wir uns schließlich ansehen, was auf der Bytecode-Ebene passiert. Im Folgenden wird ein Teil des Bytecodes der Methode case1 abgefangen und mit dem Quellcode verglichen, um die Bedeutung jeder Anweisung darin zu kommentieren

Was bedeutet privat in Java? Was bedeutet privat in Java? Nov 24, 2022 pm 06:27 PM

In Java bedeutet „privat“ „privat“ und ist ein Zugriffskontrollmodifikator, der zum Ändern von Klassen, Eigenschaften und Methoden verwendet wird. Mit „private“ geänderte Klassenmitglieder können nur von den Methoden der Klasse selbst aufgerufen und geändert werden und können von keiner anderen Klasse (einschließlich Unterklassen der Klasse) aufgerufen und referenziert werden. Daher verfügt der private Modifikator über die höchste Schutzstufe.

So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone Jul 29, 2023 am 08:22 AM

Teil 1: Erste Schritte zur Fehlerbehebung Überprüfen des Apple-Systemstatus: Bevor wir uns mit komplexen Lösungen befassen, beginnen wir mit den Grundlagen. Das Problem liegt möglicherweise nicht an Ihrem Gerät; die Server von Apple sind möglicherweise ausgefallen. Besuchen Sie die Systemstatusseite von Apple, um zu sehen, ob der AppStore ordnungsgemäß funktioniert. Wenn es ein Problem gibt, können Sie nur warten, bis Apple es behebt. Überprüfen Sie Ihre Internetverbindung: Stellen Sie sicher, dass Sie über eine stabile Internetverbindung verfügen, da das Problem „Verbindung zum AppStore nicht möglich“ manchmal auf eine schlechte Verbindung zurückzuführen ist. Versuchen Sie, zwischen WLAN und mobilen Daten zu wechseln oder die Netzwerkeinstellungen zurückzusetzen (Allgemein > Zurücksetzen > Netzwerkeinstellungen zurücksetzen > Einstellungen). Aktualisieren Sie Ihre iOS-Version:

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Wie verwendet Vue3 den Setup-Syntaxzucker, um das Schreiben von Return zu verweigern? Wie verwendet Vue3 den Setup-Syntaxzucker, um das Schreiben von Return zu verweigern? May 12, 2023 pm 06:34 PM

Vue3.2-Setup-Syntaxzucker ist ein Syntaxzucker zur Kompilierungszeit, der die kombinierte API in einer einzelnen Dateikomponente (SFC) verwendet, um das umständliche Setup in Vue3.0 zu lösen. Die durch den Import eingeführten deklarierten Variablen, Funktionen und Inhalte werden bereitgestellt Rückkehr, damit sie in Vue3.0 verwendet werden können. 1. Es besteht keine Notwendigkeit, deklarierte Variablen, Funktionen und Inhalte zurückzugeben, die durch Import während der Verwendung eingeführt wurden }from'./utils'//variable constmsg='Hello !'//function func

See all articles