PHP封装一个上传类

<?php

//print_r($_FILES[‘pic‘]);

//print_r($_SERVER);

header("Content-type:text/html; charset=utf-8");

date_default_timezone_set("PRC");

define("ROOT",$_SERVER[‘DOCUMENT_ROOT‘]);

class Upload{

protected $allowExt=array(‘jpg‘,‘png‘,‘gif‘,‘bmp‘); //设置上传类型

protected $allowSize=2;  //限制上传大小

protected $errno=0;

protected $error=array(

0=>‘文件上传成功‘,

1=>‘文件超过了 php.ini 中 upload_max_filesize 选项限制的值‘,

2=>‘上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值‘,

3=>‘文件只有部分被上传‘,

4=>‘没有文件被上传‘,

6=>‘找不到临时文件夹‘,

7=>‘文件写入失败‘,

8=>‘文件上传名字name未设置‘,

9=>‘上传后缀名不允许‘,

10=>‘文件创建目录有问题‘,

11=>‘错误类型未知‘,

12=>‘不是上传文件‘

);

protected function getExt($filename){               /*获取后缀名*/

$ext=strtolower(strrchr($filename,‘.‘));

return $ext;

}

protected function checkExt($ext){                     /*检测后缀名*/

return in_array(ltrim($ext,‘.‘),$this->allowExt);

}

protected function checkSize($size){                  /*检测大小*/

return $size<=$this->allowSize*1000*1000;

}

protected function mk_dir(){                        /*创建目录*/

$dir=date("Ymd",time());

$dir=ROOT."/test/upload/img/".$dir;

if(!is_dir($dir)){

mkdir($dir,0777,true);

}

return $dir;

}

protected function random($n){                   /*生成随机名*/

if($n<=0){

return false;

}

$str="0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";

$str=substr(str_shuffle($str),0,$n);

return $str;

}

function getErr(){                           /*设置错误接口*/

return $this->error[$this->errno];

}

function up($name){            /*实例化对象后调用公用方法*/

if(!isset($_FILES[$name])){

return false;

}

$upload=$_FILES[$name];

$ext=$this->getExt($upload[‘name‘]);

if(!$this->checkExt($ext)){

$this->errno=9;

return false;

}

if(!$this->checkSize($upload[‘size‘])){

$this->errno=1;

return fasle;

}

if($this->error=$upload[‘error‘]>0){

$this->errno=11;

return false;

}

$path=$this->mk_dir()."/".$this->random(8).$ext;

if(!move_uploaded_file($upload[‘tmp_name‘],$path)) {

$this->errno=10;

return false;

}

$path=str_replace(‘ROOT‘,‘‘,$path);

return $path;

}

}

$p=new Upload();

if($path=$p->up(‘pic‘)){

echo"上传成功";

echo $path;

}else{

echo $p->getErr();

}

?>

时间: 2024-11-06 18:50:16

PHP封装一个上传类的相关文章

一个能防止改名木马漏洞的无组件上传类

现在流行的asp上传组件除了无惧的化境之外,最多的可能就是ewebEditor 和Fckeditor的上传是,但是经过测试都很难防止改名为gif和asp文件上传,在FckEditor中改名后的asp木马不能直接上传,系统会检测到 <%等字符而拒绝,但是经过修改后的asp木马再改名为gif后却可以顺利上传,如在文件前端加上许多空行,或对木马进行加密处理.当然有人会认为木马传到服务器后会被杀掉,但是做过免杀的木马却会漏网.基于这些原因,本人开发了一个可以从根本上解决这个问题的无组件上传类.经过测试常

艾恩ASP无组件上传类(上传组件)说明文档(from www.sysoft.cc)

艾恩ASP无组件上传类(上传组件)说明文档2010-1-18 By Anlige一.简介自从接触ASP就开始接触上传,看过一些上传类,但是总感觉封装的还是不够简单,因此自己尝试写一个能够用最少最简单的代码实现各种上传方式的上传类.在学校期间就开始写,一点点的完善.优化,到现在的版本,现在的版本能适应各种上传方式.上传类的主要的功能如下:1.自由设置最大上传大小.单文件最大上传大小2.自由设置允许上传的文件类型3.可设置文本的编码,以适应各种上传环境4.内置进度条,a用户可选择开启和关闭5.多种错

PHP图片上传类

前言 在php开发中,必不可少要用到文件上传,整理封装了一个图片上传的类也还有必要.一.控制器调用 public function upload_file() { if (IS_POST) { if (!empty($_FILES['Filedata'])) { import('Org.Upload', COMMON_PATH); $upload = new \Upload(); // 允许上传文件大小 $upload->allowMaxSize(C('ALLOW_UPLOAD_FILE_MAX

block传值以及利用block封装一个网络请求类

1.block在俩个UIViewController间传值 最近刚学了几招block 的高级用法,其实就是利用block语法在俩个UIViewController之间传值,在这里分享给初学者,同时也方便我自己理解.我们知道UINavigationController类管理UIViewController的时候,利用的是"栈"的思想,在这里不做过多解释,切入正题,假设我们现在有俩个UIViewController,viewC1和viewC2,viewC1比viewC2先进入到UINavi

ajax结合文件上传类进行多文件的单个上传

今天做项目的时候碰见一个问题:之前一个同事离职之前做了一个网站,有一个上传商品详细图片的功能,当时已经完成,但是由于后期程序的有更改以及更改的程序员的水平也是参差不齐,最后导致程序bug很多,由于当时用的是一个框架,最终也没找到说明文档,后来我就重新写了一个结合ajax上传文件的upload.classs.php虽然界面欠缺美观,但是通俗易懂好维护. //首先是页面. index.php <!DOCTYPE html> <html lang="en"> <

面向对象中的文件上传类

<?php /** *文件上传类 * **/ class Upload { //上传到哪个目录 protected $path = './upload/'; //准许的MIME protected $allowmime = ['image/png','image/jpg','image/jpeg','image/pjpeg','image/bmp','image/wbmp','image/gif','image/x-png']; //准许的后缀 protected $allowsubfix = 

PHP文件上传类(页面和调用部分)

<!--upform.html内容--> <form action="upload.php" method="post" enctype="multipart/form-data" > name: <input type="text" name="username" value="" /><br> <input type="

文件上传类

<?php /** file: fileupload.class.php 文件上传类FileUpload 本类的实例对象用于处理上传文件,可以上传一个文件,也可同时处理多个文件上传 */ class FileUpload { private $path = "./uploads"; //上传文件保存的路径 private $allowtype = array('jpg','gif','png'); //设置限制上传文件的类型 private $maxsize = 1000000;

PHP文件上传类

<form action="upload.php" method="post" enctype="multipart/form-data" > name: <input type="text" name="username" value="" /><br> <input type="hidden" name="MAX