class Upload{ // 上传文件的最大值 public $maxSize = -1; // 允许上传的文件后缀 // 留空不作后缀检查 public $allowExts = array(); // 使用对上传图片进行缩略图处理 public $thumb = false; // 缩略图最大宽度 public $thumbMaxWidth=20; // 缩略图最大高度 public $thumbMaxHeight=20; // 错误信息 public $error = ''; // 上传成功的文件信息 public $success =array('file'=>'', 'thumb'=>'', 'name'=>'', 'type'=>'', 'size'=>0); public function __construct($maxSize='',$allowExts='',$thumb=false,$thumbMaxWidth=100,$thumbMaxHeight=100) { if(!empty($maxSize) && is_numeric($maxSize)) { $this->maxSize = $maxSize; } if(!empty($allowExts)) { if(is_array($allowExts)) { $this->allowExts = array_map('strtolower',$allowExts); }else { $this->allowExts = explode(',',strtolower($allowExts)); } } $this->thumb = $thumb; $this->thumbMaxWidth = $thumbMaxWidth; $this->thumbMaxHeight = $thumbMaxHeight; } /** * 保存文件,并根据设置决定是否生成缩略图 * @param $_FILES $file--要保存的附件 * @param String $path--要保存附件的地址 * @return boolean */ public function saveFile($file,$path){ //判断文件是否存在 if(empty($file['size'])||empty($file['tmp_name'])) { $this->error = "1-传入的附件不存在"; return false; } //检查文件大小 if(!$this->_checkSize($file['size'])) { $this->error = '2-上传文件大小不符!'; return false; } //获取文件的后缀名 $fileExt = $this->_fileExt($file['name']); //检查文件类型 if(!$this->_checkExt($fileExt)) { $this->error ='3-上传文件类型不允许'; return false; } // 如果是图像文件 检测文件格式 if(in_array($fileExt,array('gif','jpg','jpeg','bmp','png','swf')) && false === getimagesize($file['tmp_name'])) { $this->error = '4-非法图像文件'; return false; } //生成文件的完整存储路径 $childPath = $this->_getFilePath($path); if(empty($childPath)){ $this->error = "5-出入的文件夹路径不具有写权限"; return false; } //生成文件最终存储路径 $absolutePath = $path.'/'.$childPath; $newFileName = date('YmdHis').$this->_random(4); $storePath = $absolutePath.'/'.$newFileName.'.'.$fileExt; //保存上传的文件 if(@copy($file['tmp_name'],$storePath) || (function_exists("move_uploaded_file")&&@move_uploaded_file($file['tmp_name'],$storePath))) { @unlink($file['tmp_name']); $this->success['file'] = $childPath.'/'.$newFileName.'.'.$fileExt; $this->success['name'] = $newFileName.'.'.$fileExt; $this->success['type'] = $fileExt; $this->success['size'] = $file['size']; }else if(is_readable($file['tmp_name'])){ $fp = @fopen($file['tmp_name'], 'rb'); @flock($fp, 2); $attachedContent = @fread($fp, $file['size']); @fclose($fp); $fp = @fopen($storePath, 'wb'); @flock($fp, 2); if(@fwrite($fp, $attachedContent)){ @unlink($file['tmp_name']); $this->success['file'] = $childPath.'/'.$newFileName.'.'.$fileExt; $this->success['name'] = $newFileName.'.'.$fileExt; $this->success['type'] = $fileExt; $this->success['size'] = $file['size']; } @fclose($fp); }else{ $this->error = "6-文件上传保存错误!"; return false; } if($this->thumb && in_array($fileExt,array('gif','jpg','jpeg','bmp','png'))) { $image = getimagesize($storePath); if(false !== $image) { //是图像文件生成缩略图 $thumbWidth = $this->thumbMaxWidth; $thumbHeight = $this->thumbMaxHeight; $thumbname = $absolutePath.'/'.$newFileName.'.thumb.jpg'; $this->success['thumb'] = $childPath.'/'.$newFileName.'.thumb.jpg'; // 生成图像缩略图 require_once dirname(__FILE__).'/Image.class.php'; Image::thumb($storePath,$thumbname,'',$thumbWidth,$thumbHeight,true); } } return true; } /*** * 替换已经存在的文件。 * @param:$file-上传的文件。 * @param:$absolutePath-源文件的绝对路径。 * @return:0-成功;其他-不成功。 * */ public function replaceFile($file,$absolutePath) { //判断文件是否存在 if(empty($file['size'])||empty($file['tmp_name'])) { $this->error = "1-传入的附件不存在"; return false; } //检查文件大小 if(!$this->_checkSize($file['size'])) { $this->error = '2-上传文件大小不符!'; return false; } //获取文件的后缀名 $fileExt = $this->_fileExt($file['name']); //检查文件类型 if(!$this->_checkExt($fileExt)) { $this->error ='3-上传文件类型不允许'; return false; } $new_name = $absolutePath; $tmp_name = $file['tmp_name']; if(@copy($tmp_name, $new_name) || (function_exists('move_uploaded_file') && @move_uploaded_file($tmp_name, $new_name)) || @rename($tmp_name, $new_name)) { @unlink($tmp_name); return true; }elseif(is_readable($tmp_name)) { $fp = @fopen($tmp_name, 'rb'); @flock($fp, 2); $attachedfile = @fread($fp, $file['size']); @fclose($fp); $fp = @fopen($new_name, 'wb'); @flock($fp, 2); if(@fwrite($fp, $attachedfile)) { @fclose($fp); @unlink($tmp_name); return true; } @fclose($fp); }else{ $this->error = "4-文件上传保存错误!"; return false; } } /** * 获取文件名后缀 * @param string $filename--文件名称 * @return string--文件后缀 **/ private function _fileExt($filename) { return strtolower(trim(substr(strrchr($filename, '.'), 1))); } /** * 检查文件是否允许上传 * @param String $ext--文件的后缀名 * @return boolean--true-允许;false-不允许 */ private function _checkExt($ext) { if(!empty($this->allowExts)) return in_array($ext,$this->allowExts,true); return true; } /** * 检查文件大小是否超出限制 * @param int $size--文件实际大小 * @return boolean */ private function _checkSize($size) { return !($size > $this->maxSize) || (-1 == $this->maxSize); } /** * 生成文件的上传路径 * @param String $relativePath--用户传入的相对路径 * @return string--为创建出目录返回‘’;创建成功返回用户传入相对路径下生成出存储路径 */ private function _getFilePath($relativePath) { $name1 = gmdate('Ym'); $name2 = gmdate('j'); $newfilename = $relativePath.'/'.$name1; if(!is_dir($newfilename)) { if(!@mkdir($newfilename)) { return ''; } } $newfilename .= '/'.$name2; if(!is_dir($newfilename)) { if(!@mkdir($newfilename)) { return ''; } } return $name1.'/'.$name2; } /** * 生成随机数 * @param int $length--生成的随机数长度 * @param int $numeric * @return string--随机数 */ private function _random($length, $numeric = 0) { PHP_VERSION < '4.2.0' ? mt_srand((double)microtime() * 1000000) : mt_srand(); $seed = base_convert(md5(print_r($_SERVER, 1).microtime()), 16, $numeric ? 10 : 35); $seed = $numeric ? (str_replace('0', '', $seed).'012340567890') : ($seed.'zZ'.strtoupper($seed)); $hash = ''; $max = strlen($seed) - 1; for($i = 0; $i < $length; $i++) { $hash .= $seed[mt_rand(0, $max)]; } return $hash; } }
相关推荐
支持批量上传图片,视频,文件,封装的工具类,可以返回JSON
使用php上传excel的工具类,只要引入即可使用,操作方法见我的博客
一个php常用的工具类,它包含了JS弹窗,页面跳转,系统基本参数上传图片,html过滤,数据库输入过滤,清理session,各种验证,格式化,获取ip地址,加载模板,图片水印,文件操作等等很多实用的功能工具,方便大家...
第三步、将解压后的此软件工具包上传到需要解压的文件同级目录; 第四步、上传之后运行http://网站地址/unzip.php即可。 2、压缩: 第一步、下载此文件包,并在本地解压; 第二步、打开zip.php将../test改为相应...
文件说明: 8.php 八年文件管理器 主文件 独立上传就可以使用了 class.phpmailer.php class.smtp.php 这两个是 smtp类 上传这两个文件就可以 在不支持 email函数的情况下 发送邮件 把这两个文件上传到和 8.php 同一个...
一个php常用的工具类,它包含了JS弹窗,页面跳转,系统基本参数上传图片,html过滤,数据库输入过滤,清理session,各种验证,格式化,获取ip地址,加载模板,图片水印,文件操作等等很多实用的功能工具,方便大家...
文件上传类 支持各种格式文件 可以增加文件后缀判断 限制文件大小
整合mysql备份恢复、购物车类、cookies管理类、curl类、日期工具类、文件下载类、电子邮件类、excel工具类、各种安全过滤工具类、ftp工具类、html代码生成类、模拟http协议类、图像工具类、分页类、拼音工具类、页面...
httpmanage是提供函数管理两个版本的WWW文件PHP3工具。使用它你能够从一个开发服务器上传文件到在线服务器,记录版本之间的差别,并为每个文件保持改变记录。你还能给文件一个确定的状态,等等。"开发中" "等待上创...
(也可以通过其它途径如 FTP 将文件上传到服务器,这样只要指定其位置即可。) ------------------------------------------------------- 服务器端打包下载操作说明 1 用记事本打开 unzip.php ,在第二行,...
php常用工具类,包含数组、字符串、url、文件上传、验证、压缩、图片等封装类
注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。 开发语言 : PHP 数据库 : MySQL 开发工具 : phpstrom 源码类型 : WebForm 安装简易说明: 上传 → 安装 → 进入后台 → 恢复数据 → 修改cookie...
多功能精美PHP网站导航代码是以... 1、解压文件,使用上传工具(如FTP)将源码上传到网站空间 2、浏览器打开浏览,将自动跳转到安装页面 3、填写相应数据库信息,确认安装 4、安装完毕,请登陆后台管理操作
默笙工具箱是一个以PHP MySQL进行开发的导航类网站源码。 安装教程: 上传到空间/服务器,导入tools.sql数据文件,修改Common/Conf/config.php数据库信息 本版本集合了30多种工具箱,下个版本会继续更新 后台...
欢迎使用渝海SEO工具之搜狗关键词筛选工具,本工具运行环境需求:PHP。 改进描述: 1、修正因搜索引擎调整导致功能失效的缺陷 主要功能: 1、输入一句话帮您分析出最相关的搜狗关键词,方便SEO关键词设计; ...
8.2.3 PHP文件上传处理 8.3 电子邮件处理 8.3.1 PHP电子邮件处理概述 8.3.2 向客户发送邮件 8.3.3 PHP发送电子邮件的方式 8.4 正则表达式 8.4.1 正则表达式简介 8.4.2 常用表单项验证 8.4.3 正则表达式的...
它提供了类windows经典用户界面,一整套在线文件管理、文件预览、编辑、上传下载、在线解压缩、音乐播放功能。让你直接在浏览器端实现web开发、源码文件预览、网站部署的同时拥有与本地操作一样方便、快捷、安全的...
默认情况下我们的文件上传到www.***.com/bbs/uploadface/ 文件是用你的上传时间命名的,就是upfile里的这一句 FileName=FormPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&...
FCKeditor提供了非常强大和易用的文件上传功能,但是默认配置里,文件上传功能不可用,这是基于安全的考虑。但我认为访问安全性控制应该由程序来做,不应由控件来做。 在文件config.ascx中,修改CheckAuthentication...
6.5 文件的上传与下载 99 6.5.1 文件的上传 99 6.5.2 文件的下载 100 6.6 小结 101 第7章 字符的处理与正则表达式 102 7.1 字符类型的特殊性 102 7.2 字符的显示与格式化 102 7.2.1 字符的显示 102 7.2.2 字符的格式...