php创建文件夹上传图片

<?php
/**
*文件上传类 Upload
*/
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 ;
    }

}
?>

时间: 2024-11-06 06:31:59

php创建文件夹上传图片的相关文章

C#创建文件夹和文件

一.创建文件夹,例: 1 if (!Directory.Exists(path)) 2 { 3 Directory.CreateDirectory(path); 4 } 二.创建文件,例: 1 global::System.IO.FileInfo josnfile = new global::System.IO.FileInfo(JsonPath); 2 if (!josnfile.Exists) 3 { 4 // 创建map.json文件 5 FileStream fs = new FileS

自动创建文件夹的两种方法

自动创建文件夹的两种方法 1.CreateDictionary() CreateDirectory(myPath, 0); //在临时文件夹中创建本应用的文件夹 原型为:BOOL WINAPI CreateDirectory(__in  LPCTSTR lpPathName, __in LPSECURITY_ATTRIBUTES lpSecurityAttributes); 其中lpPathName是要创建的目录的路径,第2个涉及安全性问题 传NULL就好了 例如: char path[MAX_

iOS 创建文件夹,删除文件夹,对文件夹重命名的操作

iOS 创建文件夹,删除文件夹,对文件夹重命名的操作 by 伍雪颖 + (void)createFolder:(NSString *)folderName { NSString *imageDir = [NSString stringWithFormat:@"%@/Documents/%@", NSHomeDirectory(),folderName]; NSLog(@"HomeDir: %@",imageDir); BOOL isDir = NO; NSFileM

java文件操作 之 创建文件夹路径和新文件

一:问题 java 的如果文件夹路径不存在,先创建:如果文件名 的文件不存在,先创建再读写;存在的话直接追加写,关键字true表示追加 二:代码实现 package edu.tju.cs; import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; public c

C# 在本地创建文件夹及子文件夹

1 string dict = @"d:\估价报告\"; 2 if (!Directory.Exists(dict)) 3 { 4 Directory.CreateDirectory(dict); //创建文件夹 5 } 6 string subFolder = "subfolder"; 7 string pathString = System.IO.Path.Combine(dict, subFolder); 8 if (!System.IO.File.Exist

android下创建文件夹和修改其权限的方法

原文:http://www.cnblogs.com/wanqieddy/archive/2011/12/28/2304906.html 由于工作的需要,今天研究了在android下创建文件夹和修改其权限的方法,需要了解的是每个应用程序包都会有一个私有的存储数据的目录(类似文件夹),只有属于该包的应用程序才能写入该目录空间,每个包应用程序的私有数据目录位 于Android绝对路径/data/data/<包名>/目录中.除了私有数据目录应用程序还拥有/sdcard目录(即SD Card的写入权限,

CreateDirectory 创建文件夹

函数原型: CreateDirectory(  LPCTSTR lpPathName,   LPSECURITY_ATTRIBUTES lpSecurityAttributes); 简介: CreateDirectory 是Win32API函数,用于创建文件夹.     参数 lpPathName 表示路径    参数 lpSecurityAttributes 表示安全属性 =============================================================

cceditbox和cocostudio联合界面点击事件无响应问题,Android中创建文件夹问题

这两个问题折腾了我一天多时间,尽快下班时候把创建文件夹问题给解决了,刚把cceditbox点击事件无响应问题解决了.真是大爽. 1.创建文件夹 _mkdir()这个c函数就行,在vs ide中,定位的头文件是direct.h,但是这个文件不被ndk编译通过,没有这个文件.好吧,死脑筋,开始怀疑eclipse库路径设置有问题,但是不知道哪不对,搜索到了头大地步,好吧,认真仔细一看,原来是在ndk中,_mkdir函数放在了#include <sys/stat.h>中,改为这个头文件就行了. 2.点

java用流实现创建文件夹, 文件改名, 文件删除, 文件复制

创建TestFileManager类,在本类中分别创建factFile()方法(遍历文件夹中所有的文件).console()方法(换行).createFolder()方法(创建文件夹). renameFile()方法(改名).deleteFile()方法(删除文件).copyFile()方法(复制文件).showContent()(每一次操作完成重新输出所有文件): package com.maya.hanqi.filemanager; import java.io.BufferedReader