文件上传
<无详细内容>
<?
/**
* 上传类
* @author firerat
* @email lukai_rat@163.com
* @time Feb 21 2011 10:00
* @lastmodify Feb 21 2011 10:00
*/
class upload {
private $inputname ;
private $uploaddir;
private $allowtype;
private $logfile;
private $msg;
//构造函数
public function __construct(){
//
}
/**
* 检查上传文件是否合法
* @param $inputname
* @param $allowsize 默认5M
* @param $allowtype=array()
* @return array('success'=>$succes,'msg'=>)
*/
function verifyfile($inputname,$allowsize= '5*1024*1024',$allowtype=array()){
$obj = $_FILES[$inputname];
//检查上传文件类型
$type = strtolower(pathinfo($obj['name'],PATHINFO_EXTENSION));
if(!in_array($type,$this->allowtype)){
return array( 'success' => false,
'msg' => $this->showmsg('upload_err_type_not_include')
);
}
//检查文件的大小
$filesize = $obj['size'];
if( $filesize > intval($this->allowsize)){
return array( 'success' => false,
'msg' => $this->showmsg('upload_err_size_too_large')
);
}
//文件只有部分被上传
if($obj['error'] == 3){
return array( 'success' => false,
'msg' => $this->showmsg('upload_err_partial')
);
}
//没有文件被上传
if($obj['error'] == 4){
return array( 'success' => false,
'msg' => $this->showmsg('upload_err_no_file')
);
}
//找不到临时文件夹
if($obj['error'] == 6){
return array( 'success' => false,
'msg' => $this->showmsg('upload_err_no_tmp_dir')
);
}
//写入失败
if($obj['error'] == 7){
return array( 'success' => false,
'msg' => $this->showmsg('upload_err_cant_write')
);
}
if($obj['error'] == 0){
return array( 'success' => true,
'msg' => $this->showmsg('ok')
);
}else{
return array( 'success' => true,
'msg' => $this->showmsg('upload_err_other')
);
}
}
/**
* 上传核心操作
* @param $inputname 上传的file的name
* @param $allowsize 允许的文件的大小 B
* @param $uploaddir 上传目录
* @param $allowtype 允许类型
* @return $newfile; 保存文件地址
*/
public function start_upload($inputname=null,
$allowsize=0,
$uploaddir='upload',
$allowtype=array('rar','zip')){
//初始化对象
$this->inputname = $inputname;
$this->allowsize = intval($allowsize);
$this->allowtype = $allowtype;
$this->uploaddir = DIR_ABSOLUE_ROOT_PATH.'\\'.$uploaddir.'\\';
$this->logfile = DIR_ABSOLUE_ROOT_PATH.'\\'.'upload.log';
//上传file对象
$obj = $_FILES[$inputname];
//检查返回的参数
$checkresult = $this->verifyfile($this->inputname,$this->allowtype,$this->allowsize);
//如果上传成功
if(true == $checkresult['success']){
//临时文件转移到目标文件夹
$oldfile = $obj['tmp_name'];
$ext = strtolower(pathinfo($obj['name'], PATHINFO_EXTENSION));
$newsfilename = uniqid(md5(rand().time()), true);
$newfile = $this->uploaddir.'\\'.$newsfilename.'.'.$ext;
if(move_uploaded_file($oldfile, $newfile)){
return $newfile;
}else{
$this->write_err_msg();
}
}else{
//记录上传失败消息
$this->write_err_msg();
}
}
/**
* 显示错误信息
* @param $e
* @return $errormsg[$e]
*/
private function showmsg($e){
$this->msg = $e;
//错误消息初始化
$errormsg = array(
'ok' => '上传成功' ,
'upload_err_partial' => '上传部分' ,
'upload_err_size_too_large' => '文件太大了' ,
'upload_err_no_file' => '文件没有被上传' ,
'upload_err_no_tmp_dir' => '没有找到临时文件夹',
'upload_err_cant_write' => '写入失败',
'upload_err_type_not_include' => '上传文件的类型不正确',
'upload_err_other' => '其他错误'
);
//返回信息
return $errormsg[$e];
}
/**
* 将信息写入日志文件
*
* @return
*/
private function write_err_msg(){
//具体实现
$errormsg = $this->msg;
$time = date('l dS \of F Y h:i:s A',time());
$content = '\r\n'.' '.$time." || ".$errormsg.'\n\r';
$filename = $this->logfile;
//写入日志文件,并启用追加到文件最后
$len = file_put_contents($filename,$content,FILE_APPEND);
}
}
2. [文件] upload.class.php ~ 5KB 下载(34) 跳至 [1] [2] [3] [4] [全屏预览]
<?
/**
* 上传类
* @author firerat
* @email lukai_rat@163.com
* @time Feb 16 2011 15:28
* @lastmodify Feb 16 2011 15:28
*/
class upload {
private $inputname ;
private $uploaddir;
private $allowtype;
private $logfile;
private $msg;
//构造函数
public function __construct(){
//
}
/**
* 检查上传文件是否合法
* @param $inputname
* @param $allowsize 默认5M
* @param $allowtype=array()
* @return array('success'=>$succes,'msg'=>)
*/
function verifyfile($inputname,$allowsize= '5*1024*1024',$allowtype=array()){
$obj = $_FILES[$inputname];
//检查上传文件类型
$type = strtolower(pathinfo($obj['name'],PATHINFO_EXTENSION));
if(!in_array($type,$this->allowtype)){
return array( 'success' => false,
'msg' => $this->showmsg('upload_err_type_not_include')
);
}
//检查文件的大小
$filesize = $obj['size'];
if( $filesize > intval($this->allowsize)){
return array( 'success' => false,
'msg' => $this->showmsg('upload_err_size_too_large')
);
}
//文件只有部分被上传
if($obj['error'] == 3){
return array( 'success' => false,
'msg' => $this->showmsg('upload_err_partial')
);
}
//没有文件被上传
if($obj['error'] == 4){
return array( 'success' => false,
'msg' => $this->showmsg('upload_err_no_file')
);
}
//找不到临时文件夹
if($obj['error'] == 6){
return array( 'success' => false,
'msg' => $this->showmsg('upload_err_no_tmp_dir')
);
}
//写入失败
if($obj['error'] == 7){
return array( 'success' => false,
'msg' => $this->showmsg('upload_err_cant_write')
);
}
if($obj['error'] == 0){
return array( 'success' => true,
'msg' => $this->showmsg('ok')
);
}else{
return array( 'success' => true,
'msg' => $this->showmsg('upload_err_other')
);
}
}
/**
* 上传核心操作
* @param $inputname 上传的file的name
* @param $allowsize 允许的文件的大小 B
* @param $uploaddir 上传目录
* @param $allowtype 允许类型
* @return $newfile; 保存文件地址
*/
public function start_upload($inputname=null,$allowsize=0,$uploaddir='upload',$allowtype=array('rar','zip')){
//初始化对象
$this->inputname = $inputname;
$this->allowsize = intval($allowsize);
$this->allowtype = $allowtype;
$this->uploaddir = DIR_ABSOLUE_ROOT_PATH.'\\'.$uploaddir.'\\';
$this->logfile = DIR_ABSOLUE_ROOT_PATH.'\\'.'upload.log';
//上传file对象
$obj = $_FILES[$inputname];
//检查返回的参数
$checkresult = $this->verifyfile($this->inputname,$this->allowtype,$this->allowsize);
//如果上传成功
if(true == $checkresult['success']){
//临时文件转移到目标文件夹
$oldfile = $obj['tmp_name'];
$ext = strtolower(pathinfo($obj['name'], PATHINFO_EXTENSION));
$newsfilename = uniqid(md5(rand().time()), true);
$newfile = $this->uploaddir.'\\'.$newsfilename.'.'.$ext;
if(move_uploaded_file($oldfile, $newfile)){
return $newfile;
}else{
$this->write_err_msg();
}
}else{
//记录上传失败消息
$this->write_err_msg();
}
}
/**
* 显示错误信息
* @param $e
* @return $errormsg[$e]
*/
private function showmsg($e){
$this->msg = $e;
//错误消息初始化
$errormsg = array(
'ok' => '上传成功' ,
'upload_err_partial' => '上传部分' ,
'upload_err_size_too_large' => '文件太大了' ,
'upload_err_no_file' => '文件没有被上传' ,
'upload_err_no_tmp_dir' => '没有找到临时文件夹',
'upload_err_cant_write' => '写入失败',
'upload_err_type_not_include' => '上传文件的类型不正确',
'upload_err_other' => '其他错误'
);
//返回信息
return $errormsg[$e];
}
/**
* 将信息写入日志文件
*
* @return
*/
private function write_err_msg(){
//具体实现
$errormsg = $this->msg;
$time = date('l dS \of F Y h:i:s A',time());
$content = '\r\n'.' '.$time." || ".$errormsg.'\n\r';
$filename = $this->logfile;
//写入日志文件,并启用追加到文件最后
$len = file_put_contents($filename,$content,FILE_APPEND);
}
}
3. [文件] index.php ~ 403B 下载(24) 跳至 [1] [2] [3] [4] [全屏预览]
<?
//定义该文件件的所在绝对路径
define('DIR_ABSOLUE_ROOT_PATH',realpath(dirname(__FILE__)));
include 'upload.class.php';
$upload = new upload();
$inputname = 'inputname';
$allowsize = 1024; // 1G = 1024M 1M = 1024K 1K = 1024B
$desdir = 'upload';
$allowtype = array('rar','flv','zip');
$upload->start_upload('file',$allowsize,'upload',array('rar','flv','zip'));
4. [文件] index.html ~ 562B 下载(26) 跳至 [1] [2] [3] [4] [全屏预览]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>上传表单</title>
</head>
<body>
<form action="index.php" method="post" enctype="multipart/form-data" >
<p>
<input type="file" name='file' />
</p>
<p>
<input type="submit" name='submit' value='submit' />
</p>
</form>
</body>
</html>
- 上一篇:迅雷、快车和QQ旋风专用链接加解密
- 下一篇:php将数据导出为execl文件格式
精彩图集
精彩文章






