今天写的上传类,纯练手之作,供新人学习
/*
*@文件上傳
*@要獲取上傳實例 請使用 Upload::getInstance(); 具體使用方法請參考類接口
*@auther 張文慶
*@email 812035863@qq.com
*@blog www.92zyw.com
* */
class Upload{
private static $instance = null;
protected $destDir; //上傳文件的存放目錄
protected $allowType; //允許上傳的類型
protected $denyType; //拒絕上傳文件的類型
protected $mutilUpload; //是否允許多文件上傳
protected $maxUpload; //最大上傳字節(jié)數(shù)
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);
}
}
/*
* @多文件上傳
* @接收的參數(shù)是數(shù)組 格式 如: 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('請確認數(shù)組參數(shù)是否符合多文件上傳的要求!');
}
$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);
}
}
轉載于:https://www.cnblogs.com/Super-Man/p/4218865.html
總結
以上是生活随笔為你收集整理的今天写的上传类,纯练手之作,供新人学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: position的高级使用
- 下一篇: Javascript知识——事件