<?
php
/* *
*文件上传类 Upload
*2006/3/16
*@athor:waixin
*/
class Upload {
const UPLOAD_SECCUSS = " 上传成功!请进入下一步... " ;
const UPLOAD_FAILING = " 上传失败! " ;
const UPLOAD_ERRORS = " 上传图片失败,是图片文件为空、文件格式不正确,或是文件超过了限大小 " ;
const NOT_UPLOAD_FILE = " 不是上传的文件,你想干嘛!! " ;
var $id ; // id关联编号
var $dirStyle = 0 ; // 设置文件上传目录方式0:mdir方式 ;1 :mdir_YM 方式 ; 2:mdir_YM_D 方式
var $size ; // 文件大小 单位:字节
var $type ; // 文件类型
var $path ; // 保存回路径
var $upfile ; // 上传文件数组
//var $name ; //form中 "type=file" 输入框的name值
var $isVaild = false ; // 验证
var $isSuccess = false ; // 是否成功
//var $newpath ; // 已处理过的路径
var $newfilename ; // 已处理过的文件名
const MY_DS = ' / ' ; // 路径分隔符 通用的
function __construct( $upfile , $path , $type = " image/pjpeg,image/jpg,image/jpeg,image/gif,image/x-png,image/png,image/bmp " , $size = 50000 ){
$this -> path = $path ;
$this -> type = explode ( ' , ' , $type ) ;
$this -> size = $size ;
$this -> upfile = $upfile ;
}
/* *
*用id号关联文件
*/
function setId( $id ){
$this -> id = $id ;
}
/* *
*设置文件上传目录方式
*/
function setDirStyle( $id = 1 ){
if ( $id == 1 ){
return ;
} else {
$this -> dirStyle = 2 ;
}
}
/* *
*验证文件是否可以上传
*/
function vaild(){
foreach ( $this -> type as $value ){
if ( $this -> upfile[ ' type ' ] == $value && $this -> upfile[ ' size ' ] > 0 &&
$this -> upfile[ ' size ' ] <= $this -> size ){
$this -> isVaild = true ;
return true ;
}
}
return $this -> isVaild ;
}
/* *
*判断是否上传成功
*/
function isSuccess(){
return $this -> isSuccess ;
}
/* *
*分年月建立日录
*/
function mdir_YM( $path ){
// $dir = date("Y-m") ;
$dir = date ( " Ym " ) ;
$path = str_replace ( array ( ' / ' ) , self :: MY_DS , $path ) ;
if ( substr ( $path ,- 1 , 1 ) != self :: MY_DS ){
$path .= self :: MY_DS ;
}
if ( ! file_exists ( $path . $dir )){
if ( mkdir ( $path . $dir ) ){
$this -> path = $path . $dir . self :: MY_DS ;
}
} else {
$this -> path = $path . $dir . self :: MY_DS ;
}
}
/* *
*分年月/日建立日录
*/
function mdir_YM_D( $path ){
// $dir = date("Y-m") ;
$dir = date ( " Ym " ) ;
$subdir = date ( " d " ) ;
$path = str_replace ( array ( ' / ' ) , self :: MY_DS , $path );
if ( substr ( $path ,- 1 , 1 ) != self :: MY_DS ){
$path .= self :: MY_DS ;
}
$dirPath = $path . $dir ;
$subDirPath = $dirPath . self :: MY_DS . $subdir ;
if ( ! file_exists ( $dirPath )){
if ( mkdir ( $dirPath ) ){
if ( file_exists ( $dirPath ) && ! file_exists ( $subDirPath )){
if ( mkdir ( $subDirPath )){
$this -> path = $subDirPath . self :: MY_DS ;
}
}
}
} else if ( ! file_exists ( $subDirPath )) {
if ( mkdir ( $subDirPath )){
$this -> path = $subDirPath . self :: MY_DS ;
}
} else {
$this -> path = $subDirPath . self :: MY_DS ;
}
}
/* *
*根据路径创建目录
*@param $path 带文件名的路和径
*/
static function mdirPath( $path ){
$thePath = str_replace ( array ( ' / ' ) , self :: MY_DS , $path );
$thePath = dirname ( substr_compare ( $thePath , self :: MY_DS , 0 , 1 ) == 0 ? substr ( $thePath , 1 ) : $thePath );
$sub = explode (self :: MY_DS , $thePath ) ;
$n = count ( $sub ) ;
$i = 0 ;
$tempPath = '' ;
while ( $i < $n ){
$tempPath .= $sub [ $i ++ ] . self :: MY_DS ;
if ( ! file_exists ( $tempPath )) {
if ( ! mkdir ( $tempPath )) {
return false ;
}
}
}
if ( $i >= $n ){
return true ;
}
}
/* *
*(static)
*分年月/日建立日录
*/
static function sMdir_YM_D( $path ){
// $dir = date("Y-m") ;
$dir = date ( " Ym " ) ;
$subdir = date ( " d " ) ;
$path = str_replace ( array ( ' / ' ) , self :: MY_DS , $path ) ;
if ( substr ( $path ,- 1 , 1 ) != self :: MY_DS ){
$path .= self :: MY_DS ;
}
$dirPath = $path . $dir ;
$subDirPath = $dirPath . self :: MY_DS . $subdir ;
if ( ! file_exists ( $dirPath )){
if ( mkdir ( $dirPath ) ){
if ( file_exists ( $dirPath ) && ! file_exists ( $subDirPath )){
if ( mkdir ( $subDirPath )){
return $subDirPath . self :: MY_DS ;
} else {
return '' ;
}
} else {
return $subDirPath . self :: MY_DS ;
}
} else {
return '' ;
}
} else if ( ! file_exists ( $subDirPath )){
if ( mkdir ( $subDirPath )){
return $subDirPath . self :: MY_DS ;
} else {
return '' ;
}
} else {
return $subDirPath . self :: MY_DS ;
}
}
/* *
*返回文件路径名,不包括文件名
*/
function getPath(){
return $this -> path;
}
/* *
*返回文件保存的完整路径
*/
function getFullPath(){
return ( substr_compare ( $this -> path , self :: MY_DS , 0 , 1 ) != 0 ? self :: MY_DS . $this -> path : $this -> path) . $this -> newfilename;
}
/* *
*产生新的文件名
*/
function mfilename( $name ){
$names = explode ( " . " , $name );
$theId = ! empty ( $this -> id) ? $this -> id . ' _ ' : '' ;
$this -> newfilename = $theId . uniqid ( rand ()) . " . " . $names [ count ( $names ) - 1 ];
}
/* *
*返回新的文件名
*/
function getNewFilename(){
return $this -> newfilename;
}
/* *
*开始上传
*/
function doUpload(){
if ( $this -> vaild()){
if ( is_uploaded_file ( $this -> upfile[ ' tmp_name ' ])){
if ( $this -> dirStyle == 1 ){
$this -> mdir_YM( $this -> path);
} else if ( $this -> dirStyle == 2 ) {
$this -> mdir_YM_D( $this -> path);
} else {
// $this->path = substr_compare($this->path,self::MY_DS,0,1) != 0 ? self::MY_DS.$this->path : $this->path ;
}
$this -> mfilename( $this -> upfile[ ' name ' ]);
if ( is_uploaded_file ( $this -> upfile[ ' tmp_name ' ])){
if ( move_uploaded_file ( $this -> upfile[ ' tmp_name ' ] , $this -> path . $this -> getNewFilename())){
$msg = self :: UPLOAD_SECCUSS ;
$this -> isSuccess = true ;
} else {
$msg = self :: UPLOAD_FAILING ;
}
}
} else {
$msg = self :: NOT_UPLOAD_FILE ;
}
} else {
$msg = self :: UPLOAD_ERRORS . round ( $this -> size / 1024 ) . " KB. " ;
}
return $msg ;
}
}
?>
/* *
*文件上传类 Upload
*2006/3/16
*@athor:waixin
*/
class Upload {
const UPLOAD_SECCUSS = " 上传成功!请进入下一步... " ;
const UPLOAD_FAILING = " 上传失败! " ;
const UPLOAD_ERRORS = " 上传图片失败,是图片文件为空、文件格式不正确,或是文件超过了限大小 " ;
const NOT_UPLOAD_FILE = " 不是上传的文件,你想干嘛!! " ;
var $id ; // id关联编号
var $dirStyle = 0 ; // 设置文件上传目录方式0:mdir方式 ;1 :mdir_YM 方式 ; 2:mdir_YM_D 方式
var $size ; // 文件大小 单位:字节
var $type ; // 文件类型
var $path ; // 保存回路径
var $upfile ; // 上传文件数组
//var $name ; //form中 "type=file" 输入框的name值
var $isVaild = false ; // 验证
var $isSuccess = false ; // 是否成功
//var $newpath ; // 已处理过的路径
var $newfilename ; // 已处理过的文件名
const MY_DS = ' / ' ; // 路径分隔符 通用的
function __construct( $upfile , $path , $type = " image/pjpeg,image/jpg,image/jpeg,image/gif,image/x-png,image/png,image/bmp " , $size = 50000 ){
$this -> path = $path ;
$this -> type = explode ( ' , ' , $type ) ;
$this -> size = $size ;
$this -> upfile = $upfile ;
}
/* *
*用id号关联文件
*/
function setId( $id ){
$this -> id = $id ;
}
/* *
*设置文件上传目录方式
*/
function setDirStyle( $id = 1 ){
if ( $id == 1 ){
return ;
} else {
$this -> dirStyle = 2 ;
}
}
/* *
*验证文件是否可以上传
*/
function vaild(){
foreach ( $this -> type as $value ){
if ( $this -> upfile[ ' type ' ] == $value && $this -> upfile[ ' size ' ] > 0 &&
$this -> upfile[ ' size ' ] <= $this -> size ){
$this -> isVaild = true ;
return true ;
}
}
return $this -> isVaild ;
}
/* *
*判断是否上传成功
*/
function isSuccess(){
return $this -> isSuccess ;
}
/* *
*分年月建立日录
*/
function mdir_YM( $path ){
// $dir = date("Y-m") ;
$dir = date ( " Ym " ) ;
$path = str_replace ( array ( ' / ' ) , self :: MY_DS , $path ) ;
if ( substr ( $path ,- 1 , 1 ) != self :: MY_DS ){
$path .= self :: MY_DS ;
}
if ( ! file_exists ( $path . $dir )){
if ( mkdir ( $path . $dir ) ){
$this -> path = $path . $dir . self :: MY_DS ;
}
} else {
$this -> path = $path . $dir . self :: MY_DS ;
}
}
/* *
*分年月/日建立日录
*/
function mdir_YM_D( $path ){
// $dir = date("Y-m") ;
$dir = date ( " Ym " ) ;
$subdir = date ( " d " ) ;
$path = str_replace ( array ( ' / ' ) , self :: MY_DS , $path );
if ( substr ( $path ,- 1 , 1 ) != self :: MY_DS ){
$path .= self :: MY_DS ;
}
$dirPath = $path . $dir ;
$subDirPath = $dirPath . self :: MY_DS . $subdir ;
if ( ! file_exists ( $dirPath )){
if ( mkdir ( $dirPath ) ){
if ( file_exists ( $dirPath ) && ! file_exists ( $subDirPath )){
if ( mkdir ( $subDirPath )){
$this -> path = $subDirPath . self :: MY_DS ;
}
}
}
} else if ( ! file_exists ( $subDirPath )) {
if ( mkdir ( $subDirPath )){
$this -> path = $subDirPath . self :: MY_DS ;
}
} else {
$this -> path = $subDirPath . self :: MY_DS ;
}
}
/* *
*根据路径创建目录
*@param $path 带文件名的路和径
*/
static function mdirPath( $path ){
$thePath = str_replace ( array ( ' / ' ) , self :: MY_DS , $path );
$thePath = dirname ( substr_compare ( $thePath , self :: MY_DS , 0 , 1 ) == 0 ? substr ( $thePath , 1 ) : $thePath );
$sub = explode (self :: MY_DS , $thePath ) ;
$n = count ( $sub ) ;
$i = 0 ;
$tempPath = '' ;
while ( $i < $n ){
$tempPath .= $sub [ $i ++ ] . self :: MY_DS ;
if ( ! file_exists ( $tempPath )) {
if ( ! mkdir ( $tempPath )) {
return false ;
}
}
}
if ( $i >= $n ){
return true ;
}
}
/* *
*(static)
*分年月/日建立日录
*/
static function sMdir_YM_D( $path ){
// $dir = date("Y-m") ;
$dir = date ( " Ym " ) ;
$subdir = date ( " d " ) ;
$path = str_replace ( array ( ' / ' ) , self :: MY_DS , $path ) ;
if ( substr ( $path ,- 1 , 1 ) != self :: MY_DS ){
$path .= self :: MY_DS ;
}
$dirPath = $path . $dir ;
$subDirPath = $dirPath . self :: MY_DS . $subdir ;
if ( ! file_exists ( $dirPath )){
if ( mkdir ( $dirPath ) ){
if ( file_exists ( $dirPath ) && ! file_exists ( $subDirPath )){
if ( mkdir ( $subDirPath )){
return $subDirPath . self :: MY_DS ;
} else {
return '' ;
}
} else {
return $subDirPath . self :: MY_DS ;
}
} else {
return '' ;
}
} else if ( ! file_exists ( $subDirPath )){
if ( mkdir ( $subDirPath )){
return $subDirPath . self :: MY_DS ;
} else {
return '' ;
}
} else {
return $subDirPath . self :: MY_DS ;
}
}
/* *
*返回文件路径名,不包括文件名
*/
function getPath(){
return $this -> path;
}
/* *
*返回文件保存的完整路径
*/
function getFullPath(){
return ( substr_compare ( $this -> path , self :: MY_DS , 0 , 1 ) != 0 ? self :: MY_DS . $this -> path : $this -> path) . $this -> newfilename;
}
/* *
*产生新的文件名
*/
function mfilename( $name ){
$names = explode ( " . " , $name );
$theId = ! empty ( $this -> id) ? $this -> id . ' _ ' : '' ;
$this -> newfilename = $theId . uniqid ( rand ()) . " . " . $names [ count ( $names ) - 1 ];
}
/* *
*返回新的文件名
*/
function getNewFilename(){
return $this -> newfilename;
}
/* *
*开始上传
*/
function doUpload(){
if ( $this -> vaild()){
if ( is_uploaded_file ( $this -> upfile[ ' tmp_name ' ])){
if ( $this -> dirStyle == 1 ){
$this -> mdir_YM( $this -> path);
} else if ( $this -> dirStyle == 2 ) {
$this -> mdir_YM_D( $this -> path);
} else {
// $this->path = substr_compare($this->path,self::MY_DS,0,1) != 0 ? self::MY_DS.$this->path : $this->path ;
}
$this -> mfilename( $this -> upfile[ ' name ' ]);
if ( is_uploaded_file ( $this -> upfile[ ' tmp_name ' ])){
if ( move_uploaded_file ( $this -> upfile[ ' tmp_name ' ] , $this -> path . $this -> getNewFilename())){
$msg = self :: UPLOAD_SECCUSS ;
$this -> isSuccess = true ;
} else {
$msg = self :: UPLOAD_FAILING ;
}
}
} else {
$msg = self :: NOT_UPLOAD_FILE ;
}
} else {
$msg = self :: UPLOAD_ERRORS . round ( $this -> size / 1024 ) . " KB. " ;
}
return $msg ;
}
}
?>