一个完整的php文件上传类实例讲解,_PHP教程
一个完整的php文件上传类实例讲解,
这个文件上传类可以自定上传文件大小与上传文件类型及文件保存地址,在使用过程中有一个问题就是如果是中文文件名进行上传就会出现乱码,所以大家解决办法就是把页面保存成uft8即可解决。
下面就是为大家分享的代码:
<?php define('NO_FILE', '不存在上传文件'); define('NOT_ALLOW_EXT', '文件类型不在允许范围内'); define('NOT_ALLOW_SIZE', '文件大小不在允许范围内'); define('HAS_THE_FILE', '该文件已经存在'); define('UPLOAD_FAILED', '上传失败'); define('UPLOAD_SUCCESS', '上传成功'); class file_uploader { var $_file; var $_filesize; var $_fileext; var $_filedir; var $_filename; var $_filetmpname; var $allowsize; var $allowext; var $neednewname; var $newname; var $syslang; var $report; function ready($filedir = '', $file, $allowsize = '', $allowext = '', $neednewname = false, $report = 0){ $this->_filedir = is_dir($filedir) ? $filedir : ''; if(empty($file) || !isset($file['size']) || $file['size'] == 0) $this->error(NO_FILE); $this->_filesize = $file['size']; $this->_filename = $file['name']; $this->_filetmpname = $file['tmp_name']; $this->allowsize = $allowsize; $this->allowext = $allowext; $this->neednewname = ($neednewname) ? true : false; $this->newname = ''; $this->report = $report; } function do_upload(){ if(!is_uploaded_file($this->_filetmpname)) $this->error(NO_FILE); if($this->chk_ext()){ $this->error(NOT_ALLOW_EXT); return ''; } if($this->chk_size()){ $this->error(NOT_ALLOW_SIZE); return ''; } if($this->neednewname) $this->newname = $this->generate_name().".".$this->get_fileext(); if($this->chk_hasfile()){ $this->error(HAS_THE_FILE); return ''; } $filename = empty($this->newname) ? @iconv('utf-8','gb2312',$this->_filename) : $this->newname; @chmod($this->_filedir.$filename, 0777); if(move_uploaded_file($this->_filetmpname, $this->_filedir.$filename)){ return $this->result(); }else{ $this->error(UPLOAD_FAILED); return ''; } } function chk_ext(){ if(empty($this->allowext) || in_array($this->get_fileext(), explode("|",$this->allowext))) return false; return true; } function chk_size(){ if(empty($this->allowsize) || get_filesize <= $this->allowsize*1024*1024) return false; return true; } function get_filesize(){ return $this->_filesize; } function get_fileext(){ return substr($this->_filename,strrpos($this->_filename,".")+1); } function generate_name(){ return substr(md5(time()),26); } function chk_hasfile(){ return is_file($this->_filedir.$this->_filename); } function error($tip){ echo $tip; } function result(){ if($this->report){ $filename = empty($this->newname) ? $this->_filename : $this->newname; $arr = array('filename' => $filename, 'filesize' => $this->_filesize, 'tip' => UPLOAD_SUCCESS); return $arr; }else{ return UPLOAD_SUCCESS; } } } /***使用方法与参数说明***/ /*** 第一个参数$dir 为上传文件存放的路径 第二个参数为$_FILES 为你那个上传文件变量 第三个参数允许文件大小 单位为MB 第四个参数允许的文件类型 格式为jpg|png|gif 第五个参数是否需要生成新的文件名 第六个参数为返回的提示格式 0为直接提示上传正确 1则返回一个数组array('filename' => $filename, 'filesize' => $this->_filesize, 'tip' => UPLOAD_SUCCESS); ***/ //require("类文件"); //$u = new file_uploader; //$u->ready($dir, $_FILES['upload_file'], false, false, true, 0); //echo $u->do_upload(); ?>
调用方法
代码如下
$dir = 'upload/'; require("upload_class.php"); $u = new file_uploader; $u->ready($dir, $_FILES['upload_file'], false, false, true, 0); echo $u->do_upload();
补充说明:在编码上面还是有些问题,自己是在utf8的页面将数据进行提交的,所以生成的文件如果保持原来的中文名字的话在文件夹中看到就是乱码的名字,如果不想出现乱码的话需要进行一下编码的转换。
以上就是本文的全部内容,希望对大家的学习有所帮助。

Outils d'IA chauds

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.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

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)

Sujets chauds



Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Travailler avec la base de données dans CakePHP est très simple. Nous comprendrons les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans ce chapitre.

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.
