一个完整的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的页面将数据进行提交的,所以生成的文件如果保持原来的中文名字的话在文件夹中看到就是乱码的名字,如果不想出现乱码的话需要进行一下编码的转换。
以上就是本文的全部内容,希望对大家的学习有所帮助。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。
