今天写的上传类,纯练手之作,供新人学习

/*
*@文件上传
*@要获取上传实例 请使用 Upload::getInstance(); 具体使用方法请参考类接口
*@auther 张文庆
*@email [email protected]
*@blog www.92zyw.com
* */
class Upload{

private static $instance = null;

protected $destDir; //上传文件的存放目录
protected $allowType; //允许上传的类型
protected $denyType; //拒绝上传文件的类型
protected $mutilUpload; //是否允许多文件上传
protected $maxUpload; //最大上传字节数

private function __construct(array $options=null){
$this->destDir = ‘upload‘;/* str_replace(‘\\‘,‘/‘,strstr(getcwd(),‘test‘,true)); */
$this->allowType = array(‘jpg‘,‘gif‘);
$this->denyType = array(‘php‘);
$this->mutilUpload=false;
$this->maxUpload = ‘202800‘;
is_dir($this->destDir) or mkdir($this->destDir);
if(isset($options)){
foreach($options as $k =>$v){
$this->$k = $v;
}
}
}
//单例模式
public static function getInstance(array $options=null){
if(static::$instance == null){
if(isset($options)){
static::$instance = new Upload($options);
}else{
static::$instance = new Upload();
}
}
return static::$instance;
}
/* *
* 上传单个文件
* @param array
*
* */
public function upload(array $file){
try {
return $this->move($file[‘name‘],$file[‘tmp_name‘]);
} catch (UploadException $e) {
ExceptionPage::showMsg($e.getMessage(),$e->getErrno);
}

}
/*
* @多文件上传
* @接收的参数是数组 格式 如: array(array(‘name‘=>$file[‘name],‘tmp_name‘=>$file[‘tmp_file‘]))
*
* */
public function mutilUpload(array $files){
if(!$this->uploadAvailable()){
throw new UploadException("不允许进行多文件上传");
return false;
}
foreach($files as $file){
if(!isset($file) && !is_array($file)){
throw new UploadException(‘请确认数组参数是否符合多文件上传的要求!‘);
}
$this->move($file[‘name‘],$file[‘tmp_name‘]);
}
return true;
}
/* @复制文件
* @param string
* @param string
* */
protected function move($file,$tmp_name){
$filename = $this->destDir.$file;
$fileTmpName = date(‘Ymdhis‘,time()).‘.‘.pathinfo($file)[‘extension‘];
$result = move_uploaded_file($tmp_name,"{$this->destDir}/{$fileTmpName}");
if(!result){
throw new UploadException(‘文件不存在或者是由于一些不可预知的原因而无法移动文件‘);
}
return $result;
}

protected function uploadAvailable($file){
$size = filesize($file);
if($size >$this->maxUpload){
return false;
}
return false;
}
}

/* 异常类 */
class Expection{
protected $msg;
protected $errno;

public function getMessage(){
return $this->msg;
}
public function getErrno(){
return $this->errno;
}
}

/* 上传异常类 */
class UploadExpection extends Expection{
public function __construct($msg,$errno=null){
$this->msg = $msg;
if(isset($errno)){
$this->errno =null;
}else{
$this->errno = $errno;
}
}
}
class ExceptionPage{
static $instance = null;
public $html=‘‘;
public function __construct($msg,$errno=‘‘){

$html .=‘<html en="en-Ch">‘;
$html .=‘<head>‘;
$html .=‘<title>异常页面</title>‘;
$html .=‘</head>‘;
$html .=‘<body>‘;
$html .="<div><p>异常:{$msg}</p>";
if(isset($errno)){
$html .=‘<p>异常代码:{$errno}</p>‘;
}
$html .=‘</div>‘;
$html .=‘</body>‘;
$html .=‘</html>‘;
echo $html;
}
public static function showMsg($msg,$errno){
new Exception($msg,$errno);
}
}

时间: 2024-10-11 21:11:43

今天写的上传类,纯练手之作,供新人学习的相关文章

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

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

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

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

面向对象中的文件上传类

<?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 = 

asp无惧上传类2.2上传文件的同时,通过 Request.QueryString将参数传递到保存页面中

先转一段文字,对不对再评论 在后台asp程序中,以前获取表单提交的ASCII 数据,非常的容易.但是如果 需要获取上传的文件,就必须使用Request对象的BinaryRead方法来读取.BinaryRead方法是对当前输入流进行指定字节数的二进制读取,有点需要注意的 是,一旦使用BinaryRead 方法后,再也不能使用Request.Form 或  Request.QueryString 集合了.结合Request对象的TotalBytes属性,可以将 所有表单提交的数据全部变成二进制,不过

使用ThinkPHP上传类处理KindEditor上传的图片

KindEditor作为一款可视化的HTML编辑器用起来确实比较方便,其本身也自带了图片上传的处理这里修改为TP上传处理图片,是为了保证上传图片的方便(目录独立于编辑器,便于增加水印等处理) 第一步:在模板html页面引入如下文件: <link rel="stylesheet" href="/data/editor/plugins/code/prettify.css" /> <script charset="utf-8" src

图片上传类

1 import java.util.*; 2 import java.lang.*; 3 import java.io.File; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 import javax.servlet.http.HttpServletRequest; 8 import org.apache.commons.fileupload.FileItem; 9 import

超简单的php上传类代码

这个是我昨晚写的一个超简单的上传类,只要 $up->upload($_FILES['imgfile']); 即可. 一条语句搞定上传 石家庄工商代办送给所有草根的个人站长 上传文件: up.php <?php //验证 if(empty($_COOKIE['login'])) { die('index'); } //加载类 include_once("_inc/class_uppic.php"); //上传 if(!empty($_GET['action']) &&

PHP多文件上传类

<?php class Upload{ var $saveName;// 保存名 var $savePath;// 保存路径 var $fileFormat = array('gif','jpg','doc','application/octet-stream');// 文件格式&MIME限定 var $overwrite = 0;// 覆盖模式 var $maxSize = 0;// 文件最大字节 var $ext;// 文件扩展名 var $thumb = 0;// 是否生成缩略图 va

文件上传类代码(php例子)

这里是来自网络朋友的一个实现的文件上传类代码,我们详细的介绍了每个变量的用处,下面看看吧,有需要可以参考一下. 这里是来自网络朋友的一个实现的文件上传类代码,我们详细的介绍了每个变量的用处,下面看看吧,有需要可以参考一下. <?php教程 /**  * 文件上传类  */ class uploadFile { public $max_size = '1000000';//设置上传文件大小  public $file_name = 'date';//重命名方式代表以时间命名,其他则使用给予的名称