php中實(shí)用的文件上傳類_PHP教程
Jul 13, 2016 pm 04:55 PMclass upload{
??? /**
???? * html表單 input 域的 name 屬性,默認(rèn)為'file'
??? */
??? var $file_field = 'file' ;
???
??? /**
???? * $_files 數(shù)組
??? */
??? var $file_array;
???
??? /**
???? * 保存路徑,默認(rèn)為當(dāng)前路徑
??? */
??? var $save_path = '';
???
??? /**
???? * 自定義文件名
??? */
??? var $define_name;???
???
??? /**
???? * 最終保存的文件名
??? */
??? var $name;
???
??? /**
???? * 文件大小,單位:字節(jié)
??? */
??? var $size;
???
??? /**
???? * 文件擴(kuò)展名,不包含"."
??? */
??? var $ext;????
???
??? /**
???? * 允許上傳的文件類型,默認(rèn)不限制
??? */
??? var $allow_ext = array();
???
??? /**
???? * 允許上傳的文件類型,默認(rèn)不限制
??? */
??? var $allow_size = false;
???
??? /**
???? * 如果已存在同名文件,是否允許覆蓋,默認(rèn)不覆蓋。
??? */
??? var $overwrite = false;
???
??? /**
???? * 錯(cuò)誤提示
??? */
??? var $error_code;
???
??? /**
???? * 構(gòu)造函數(shù)
??? */
??? public function __construct(){
??????? if(!is_uploaded_file($_files[$this->file_field]['tmp_name'])){
??????????? die("非法上傳!");
??????? }else{
??????????? $this->file_array = $_files[$this->file_field];
??????????? $this->name = $this->getpro('name');
??????????? $this->size = $this->getpro('size');
??????????? $this->ext = $this->getpro('ext');???
??????? }
??? }
???
???
??? /**
???? * 上傳操作函數(shù)
???? * @abstract??? 上傳成功返回 true , 否則返回相應(yīng)錯(cuò)誤代碼
???? * @return??????? string or bool
??? */
??? public function upload(){
??????? if(is_uploaded_file($this->file_array['tmp_name'])){???
???????????????
??????????? if(!empty($this->allow_ext)){
??????????????? if(!in_array($this->ext,$this->allow_ext)){
??????????????????? $this->error_code = "不允許上傳該類型文件!";???
??????????????????? return false;
??????????????? }
??????????? }
???????????
??????????? if(!@file_exists(iconv('utf-8','gbk',$this->save_path))){
??????????????? $this->error_code = "文件上傳目錄不存在!";
??????????????? return false;
??????????? }
???????????
??????????? if(!is_writable(iconv('utf-8','gbk',$this->save_path))){
??????????????? $this->error_code = "文件上傳目錄不可寫(xiě)入!";
??????????????? return false;
??????????? }
???????????
??????????? if($this->overwrite==false && @file_exists(iconv('utf-8','gbk',$this->save_path.$this->name))){
??????????????? $this->error_code = "該文件已存在!";
??????????????? return false;
??????????? }
???????????
??????????? if($this->allow_size){
??????????????? if($this->size > $this->allow_size){
??????????????????? $this->error_code = "文件大小超過(guò)系統(tǒng)限制!";
??????????????????? return false;
??????????????? }
??????????? }
???????????
??????????? $result = @move_uploaded_file($this->file_array['tmp_name'],iconv("utf-8","gbk",$this->save_path.$this->getpro("name")));???????????
??????????? if($result){
??????????????? return true;
??????????? }else{
??????????????? switch($this->file_array['error']){
??????????????????? case 1:
??????????????????????? $this->error_code = "上傳的文件超過(guò)了 upload_max_filesize 選項(xiàng)限制的值!";
??????????????????? break;
??????????????????? case 2:
??????????????????????? $this->error_code = "上傳文件的大小超過(guò)了 max_file_size 選項(xiàng)指定的值!";
??????????????????? break;
??????????????????? case 3:
??????????????????????? $this->error_code = "上傳過(guò)程被中斷!";
??????????????????? break;
??????????????????? case 4:
??????????????????????? $this->error_code = "沒(méi)有文件被上傳!";
??????????????????? break;
??????????????????? case 6:
??????????????????????? $this->error_code = "找不到臨時(shí)文件夾!";
??????????????????? break;
??????????????????? case 7:
??????????????????????? $this->error_code = "文件寫(xiě)入失?。?;
??????????????????? break;
??????????????? }
??????????????? return false;
??????????? }
??????? }
??? }
???
??? /**
???? * 上傳操作函數(shù)
???? * @abstract??? 獲取文件屬性
???? * @param??????? $itme:string類型,有效輸入為name(文件名)、ext(文件擴(kuò)展名)、size(文件大小)
???? * @return??????? string
??? */
??? public function getpro($item){
??????? switch($item){
??????????? case "name":
??????????????? $filename = $this->file_array['name'];
??????????????? return isset($this->define_name) ? $this->define_name.".".$this->ext : $filename;
??????????? break;???
??????????? case "ext":
??????????????? $filename = $this->file_array['name'];
??????????????? $filter = explode(".",$filename);
??????????????? return strtolower($filter[count($filter)-1]);
??????????? break;
??????????? case "size":
??????????????? return $this->file_array['size'];
??????????? break;
??????????? default:
??????????????? die("非法操作!");
??????????? break;
??????? }
??? }
}

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le fichier SetfitS.JSON est situé dans le chemin de niveau utilisateur ou au niveau de l'espace de travail et est utilisé pour personnaliser les paramètres VScode. 1. Chemin de niveau utilisateur: Windows est C: \ Users \\ AppData \ Roaming \ Code \ User \ Settings.json, macOS est /users//library/applicationsupport/code/user/settings.json, Linux est /home//.config/code/user/settings.json; 2. Chemin au niveau de l'espace de travail: .vscode / Paramètres dans le répertoire racine du projet

ReadonlypropertiesInphp8.2CanlybeassignedonceinthestrustructoratDeclarationandcannotBemodifiedAfterward, applicationmutabilityaThelanguageLevel.2.Toachievedeep-immutability, webutableTypeSlikEarrayinArrayobjectorUSustomymutability, webutilletypeslikearraysinarrayobjectoruseseCustomMutabeColEctionSucha.

Tout d'abord, utilisez JavaScript pour obtenir les préférences du système utilisateur et les paramètres de thème stockés localement et initialiser le thème de la page; 1. La structure HTML contient un bouton pour déclencher la commutation du sujet; 2. CSS utilise: Root pour définir des variables de thème brillantes, la classe de mode. Dark définit les variables de thème sombres et applique ces variables via var (); 3. JavaScript détecte préfère-Color-Scheme et lit LocalStorage pour déterminer le thème initial; 4. Communiquez la classe en mode noir sur l'élément HTML lorsque vous cliquez sur le bouton et enregistre l'état actuel vers LocalStorage; 5. Tous les changements de couleur sont accompagnés d'une animation de transition de 0,3 seconde pour améliorer l'utilisateur

Utilisez des outils d'analyse des performances pour localiser les goulots d'étranglement, utiliser VisualVM ou JProfiler dans la phase de développement et de test, et donner la priorité à l'async-profil dans l'environnement de production; 2. Réduire la création d'objets, réutiliser les objets, utiliser StringBuilder pour remplacer l'épissage de la cha?ne et sélectionner les stratégies GC appropriées; 3. Optimiser l'utilisation de la collection, sélectionner et prérégler la capacité initiale selon la scène; 4. Optimiser la concurrence, utiliser des collections simultanées, réduire la granularité de verrouillage et régler raisonnablement le pool de threads; 5. Assurez les paramètres JVM, définissez la taille du tas raisonnable et le collecteur de déchets à faible latence et activez les journaux GC; 6. évitez la réflexion au niveau du code, remplacez les classes de wrapper par des types de base, retardez l'initialisation et utilisez final et statique; 7. Test et surveillance des performances continues, combinées avec JMH

SémantichtmlimprovesbothseoandaccessibilityByusing a été ultime

Utilisez le buzzerforrobusthttprequestswithhehers et les temps.

UsetheelementwithinatagtocreatEasanticsearchField.2. y comprisaForAccesssibility, settheform'sactionandMethod = "get" attributestosenddatatoesearchndpointwithAsharableArl.3.Addname = "Q" todefinetheQueryParameter, usePlaceHolderToguiseUd

rel = "Stylesheet" linkSsssFilesForSTylingThepage; 2.rel = "Preload" HintstopreloadCriticalResourcesForPerformance; 3.rel = "icon" setthewebsite’sfaviCon; 4.rel = "alternate" fournit la réversion desstiètes; 5.rel = & Qu
