最新的php 文件上传模型,支持多文件上传

前端之家收集整理的这篇文章主要介绍了最新的php 文件上传模型,支持多文件上传前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

<div class="codetitle"><a style="CURSOR: pointer" data="65113" class="copybut" id="copybut65113" onclick="doCopy('code65113')"> 代码如下:

<div class="codebody" id="code65113">
<?PHP
class UploadModel
{
protected $keys;
protected $err = array();
protected $target;
protected $exts;
protected $maxSize;
protected $randName;
protected $files = array();
/
初始化变量
/
public function construct()
{
$this->exts = array('jpeg','jpg','gif','png','zip','rar');
$this->maxSize = 102410242;
$this->target = dirname(
FILE__) . '/upload/';
$this->randName = true;
$this->keys = $this->getKeys();
}
/

获取 file 的名称
/
protected function getKeys()
{
$keys = array_keys($_FILES);
return $keys;
}
/
设置不同类型的变量
/
public function __set($name,$value)
{
$property = array('target','exts','maxSize','randName');
if(!in_array($name,$property)) return false;
switch(strval($name))
{
case 'target':
$this->$name = Configure::read('app_path') . $value;
break;
case 'exts':
$this->$name = explode(',',$value);
break;
case 'randName':
if($value === true || $value == 1)
{
$this->$name = true;
}
else {
$this->$name = false;
}
break;
default:
$this->$name = $value;
}
}
/

移动上传文件到指定的目录
@param $fileName 移动单个文件名称的时候,对上传文件重新命名
*/
public function save($fileName)
{
$this->err = array();
$this->files = array();
if(!file_exists($this->target)) {
mkdir($this->target);
chmod($this->target,0777);
}
foreach($this->keys as $key)
{
if(is_array($_FILES[$key]['name']))
{
$count = count($_FILES[$key]['name']);
for($i=0; $i<$count; $i++)
{
$keys = array_keys($_FILES[$key]);
foreach($keys as $item)
{
$file[$item] = $_FILES[$key][$item][$i];
}
$this->upload($file,$fileName);
}
return (count($this->err) > 0)? false:true;
}
else {
return $this->upload($_FILE[$key],$fileName);
}
}
}
/ 内部处理上传文件的过程 */
protected function upload($file,$fileName)
{
if(!is_uploaded_file($file['tmp_name'])) return false;
if(!$this->checkExt($file)) return false;
if(!$this->checkSize($file)) return false;
if($this->randName)
{
$newFileName = $this->target . date('YmdHis',time()) . rand(0,9) . '.' . $this->getExt($file['name']);
}
elseif(emptyempty($fileName))
{
$newFileName = $this->target . '/' . $file['name'];
}
else {
$newFileName = $this->target . '/' . $fileName;
}
$result = move_uploaded_file($file['tmp_name'],$newFileName);
if(!$result)
{
return false;
}
else {
$this->files[] = str_replace($this->target,$newFileName);
return true;
}
}
/*
是否是可上传文件类型
@param $file 文件对象
/
public function checkExt($file)
{
if(!in_array($this->getExt($file['name']),$this->exts))
{
$this->err[] = $file['name'].':ext';
return false;
}
else {
return true;
}
}
/

获取文件后缀名
/
public function getExt($fileName)
{
$pos = strrpos($fileName,'.')+1;
return substr($fileName,$pos);
}
/
检查文件大小是否合法
/
public function checkSize($file)
{
if($size > $this->maxSize)
{
$this->err[] = $file['name'].':max';
return false;
}
else {
return true;
}
}
/

取得已经上传文件名称
/
public function getFiles()
{
return $this->files;
}
}

使用实例:

<div class="codetitle"><a style="CURSOR: pointer" data="56827" class="copybut" id="copybut56827" onclick="doCopy('code56827')"> 代码如下:
<div class="codebody" id="code56827">
include 'uploaded.model.PHP';
$U = new UploadModel();
$U->target = '/tmp/';
$U->exts = 'jpg,gif';
$U->maxSize = 1024275; //275KB
$U->save();
$files = $U->getFiles();
print_r($files);
include 'uploaded.model.PHP';
$U = new UploadModel();
$U->target = '/tmp/';
$U->exts = 'jpg,gif';
$U->maxSize = 1024
275; //275KB
$U->save();
$files = $U->getFiles();
print_r($files);

在 MayFish 里的使用实例:


<div class="codetitle"><a style="CURSOR: pointer" data="34801" class="copybut" id="copybut34801" onclick="doCopy('code34801')"> 代码如下:
<div class="codebody" id="code34801">
public function up()
{
$U = M('SYS','upload');
$U->target = '/tmp/';
$U->exts = 'jpg,gif';
$U->maxSize = 1024275; //275KB
$U->save();
header('Location:/?a=upload');
}
public function up()
{
$U = M('SYS',gif';
$U->maxSize = 1024
275; //275KB
$U->save();
header('Location:/?a=upload');
}

前台代码


<div class="codetitle"><a style="CURSOR: pointer" data="74322" class="copybut" id="copybut74322" onclick="doCopy('code74322')"> 代码如下:
<div class="codebody" id="code74322">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml"&gt;


无<a href="/tag/biaoti/" target="_blank" class="keywords">标题</a>文档


<form action="/?a=up" method="post" enctype="multipart/form-data">







php多文件上传

猜你在找的PHP相关文章