zoukankan      html  css  js  c++  java
  • php 上传图片

    学习地址:http://www.imooc.com/video/2473

    <?php 
    header("content-type:text/html;charset=utf-8");
    
    /**
     * 生成唯一字符串
     * @return string
     */
    function getUniName(){
        return md5(uniqid(microtime(true),true));
    }
    
    /**
     * 得到文件的扩展名
     * @param string $filename
     * @return string
     */
    function getExt($filename){
        return strtolower(end(explode(".",$filename)));
    }
    
    
    
    //$_FILES
    $filename=$_FILES['myFile']['name'];
    $type=$_FILES['myFile']['type'];
    $tmp_name=$_FILES['myFile']['tmp_name'];
    $error=$_FILES['myFile']['error'];
    $size=$_FILES['myFile']['size'];
    $allowExt=array("gif","jpeg","jpg","png","wbmp");
    $maxSize=1512000;
    $imgFlag=true;
    //判断下错误信息
    if($error==UPLOAD_ERR_OK){
        $ext=getExt($filename);
        //限制上传文件类型
        if(!in_array($ext,$allowExt)){
            exit ("非法文件类型");
        }
        if($size>$maxSize){
            exit ("文件过大");
        }
        if($imgFlag){
            //如何验证图片是否是一个真正的图片类型
            //getimagesize($filename):验证文件是否是图片类型
            $info=getimagesize($tmp_name);
            //var_dump($info);exit;
            if(!$info){
                exit("不是真正的图片类型");
            }
        }
        //需要判断下文件是否是通过HTTP POST方式上传上来的
        //is_uploaded_file($tmp_name):
        
        $filename=getUniName().".".$ext;
        $path="uploads";
        if(!file_exists($path)){
            mkdir($path,0777,true);
        }
        $destination=$path."/".$filename;
        if(is_uploaded_file($tmp_name)){
            if(move_uploaded_file($tmp_name, $destination)){
                $mes="文件上传成功";
            }else{
                $mes="文件移动失败";
            }
        }else{
            $mes="文件不是通过HTTP POST方式上传上来的";
        }
    }else{
        switch($error){
            case 1:
                $mes="超过了配置文件上传文件的大小";//UPLOAD_ERR_INI_SIZE
                break;
            case 2:
                $mes="超过了表单设置上传文件的大小";            //UPLOAD_ERR_FORM_SIZE
                break;
            case 3:
                $mes="文件部分被上传";//UPLOAD_ERR_PARTIAL
                break;
            case 4:
                $mes="没有文件被上传";//UPLOAD_ERR_NO_FILE
                break;
            case 6:
                $mes="没有找到临时目录";//UPLOAD_ERR_NO_TMP_DIR
                break;
            case 7:
                $mes="文件不可写";//UPLOAD_ERR_CANT_WRITE;
                break;
            case 8:
                $mes="由于PHP的扩展程序中断了文件上传";//UPLOAD_ERR_EXTENSION
                break;
                
                
                
        }
    }
    echo $mes;
    //服务器端进行的配置
    //1》file_uploads = On,支持通过HTTP POST方式上传文件
    //2》;upload_tmp_dir =临时文件保存目录
    //3》upload_max_filesize = 2M默认值是2M,上传的最大大小2M
    //4》post_max_size = 8M,表单以POST方式发送数据的最大值,默认8M
    //客户端进行配置,form表单必须是post,也必须有enctype="multipart/form-data"
    // <form action="doAction1.php" method="post" enctype="multipart/form-data">
    //     请选择上传文件:<input type="file"  name="myFile"  /><br/>
    //     <input type="submit" value="上传"/>
    // </form>

    函数封装版本

    header("content-type:text/html;charset=utf-8");
    
    /**
     * 生成唯一字符串
     * @return string
     */
    function getUniName(){
        return md5(uniqid(microtime(true),true));
    }
    
    /**
     * 得到文件的扩展名
     * @param string $filename
     * @return string
     */
    function getExt($filename){
        return strtolower(end(explode(".",$filename)));
    }
     
    
    
    function uploadFile($fileInfo,$path="uploads",$allowExt=array("gif","jpeg","jpg","png","wbmp"),$maxSize=1512000,$imgFlag=true){
            //判断下错误信息
            if($fileInfo['error']==UPLOAD_ERR_OK){
                $ext=getExt($fileInfo['name']);
                //限制上传文件类型
                if(!in_array($ext,$allowExt)){
                    exit ("非法文件类型");
                }
                if($fileInfo['size']>$maxSize){
                    exit ("文件过大");
                }
                if($imgFlag){
                    //如何验证图片是否是一个真正的图片类型
                    //getimagesize($filename):验证文件是否是图片类型
                    $info=getimagesize($fileInfo['tmp_name']);
                    //var_dump($info);exit;
                    if(!$info){
                        exit("不是真正的图片类型");
                    }
                }
                $filename=getUniName().".".$ext;
                if(!file_exists($path)){
                    mkdir($path,0777,true);
                }
                $destination=$path."/".$filename;
                if(is_uploaded_file($fileInfo['tmp_name'])){
                    if(move_uploaded_file($fileInfo['tmp_name'], $destination)){
                        $mes="文件上传成功";
                    }else{
                        $mes="文件移动失败";
                    }
                }else{
                    $mes="文件不是通过HTTP POST方式上传上来的";
                }
            }else{
                switch($fileInfo['error']){
                    case 1:
                        $mes="超过了配置文件上传文件的大小";//UPLOAD_ERR_INI_SIZE
                        break;
                    case 2:
                        $mes="超过了表单设置上传文件的大小";            //UPLOAD_ERR_FORM_SIZE
                        break;
                    case 3:
                        $mes="文件部分被上传";//UPLOAD_ERR_PARTIAL
                        break;
                    case 4:
                        $mes="没有文件被上传";//UPLOAD_ERR_NO_FILE
                        break;
                    case 6:
                        $mes="没有找到临时目录";//UPLOAD_ERR_NO_TMP_DIR
                        break;
                    case 7:
                        $mes="文件不可写";//UPLOAD_ERR_CANT_WRITE;
                        break;
                    case 8:
                        $mes="由于PHP的扩展程序中断了文件上传";//UPLOAD_ERR_EXTENSION
                        break;
                }
            }
            return $mes;
    }

    使用方法:

    header("content-type:text/html;charset=utf-8");
    $fileInfo=$_FILES['myFile'];
    $info=uploadFile($fileInfo);
    echo $info;

     单文件多上传

    #html代码示例
    <form action="doAction2.php" method="post" enctype="multipart/form-data"> 请选择上传文件:<input type="file" name="myFile1" /><br/> 请选择上传文件:<input type="file" name="myFile2" /><br/> 请选择上传文件:<input type="file" name="myFile3" /><br/> <input type="submit" value="上传"/> </form> #你需要先引用上面的封装几个函数的文件 foreach($_FILES as $val){ $mes=uploadFile($val); echo $mes; }

    单文件、数组文件上传封装

    <?php 
    
    
    header("content-type:text/html;charset=utf-8");
    
    /**
     * 生成唯一字符串
     * @return string
     */
    function getUniName(){
        return md5(uniqid(microtime(true),true));
    }
    
    /**
     * 得到文件的扩展名
     * @param string $filename
     * @return string
     */
    function getExt($filename){
        return strtolower(end(explode(".",$filename)));
    }
    
    
    
    
    /**
     * 构建上传文件信息
     * @return array
     */
    function buildInfo(){
        if(!$_FILES){
            return ;
        }
        $i=0;
        foreach($_FILES as $v){
            //单文件,因为如果是多文件数组上传的话这个值会是一个数组类型
            if(is_string($v['name'])){
                $files[$i]=$v;
                $i++;
            }else{
                //多文件
                foreach($v['name'] as $key=>$val){
                    $files[$i]['name']=$val;
                    $files[$i]['size']=$v['size'][$key];
                    $files[$i]['tmp_name']=$v['tmp_name'][$key];
                    $files[$i]['error']=$v['error'][$key];
                    $files[$i]['type']=$v['type'][$key];
                    $i++;
                }
            }
        }
        return $files;
    }
    
    function uploadFile($path="uploads",$allowExt=array("gif","jpeg","png","jpg","wbmp"),$maxSize=2097152,$imgFlag=true){
        if(!file_exists($path)){
            mkdir($path,0777,true);
        }
        $i=0;
        $files=buildInfo();
        if(!($files&&is_array($files))){
            return ;
        }
        foreach($files as $file){
            if($file['error']===UPLOAD_ERR_OK){
                $ext=getExt($file['name']);
                //检测文件的扩展名
                if(!in_array($ext,$allowExt)){
                    exit("非法文件类型");
                }
                //校验是否是一个真正的图片类型
                if($imgFlag){
                    if(!getimagesize($file['tmp_name'])){
                        exit("不是真正的图片类型");
                    }
                }
                //上传文件的大小
                if($file['size']>$maxSize){
                    exit("上传文件过大");
                }
                if(!is_uploaded_file($file['tmp_name'])){
                    exit("不是通过HTTP POST方式上传上来的");
                }
                $filename=getUniName().".".$ext;
                $destination=$path."/".$filename;
                if(move_uploaded_file($file['tmp_name'], $destination)){
                    $file['name']=$filename;
                    unset($file['tmp_name'],$file['size'],$file['type']);
                    $uploadedFiles[$i]=$file;
                    $i++;
                }
            }else{
                switch($file['error']){
                        case 1:
                            $mes="超过了配置文件上传文件的大小";//UPLOAD_ERR_INI_SIZE
                            break;
                        case 2:
                            $mes="超过了表单设置上传文件的大小";            //UPLOAD_ERR_FORM_SIZE
                            break;
                        case 3:
                            $mes="文件部分被上传";//UPLOAD_ERR_PARTIAL
                            break;
                        case 4:
                            $mes="没有文件被上传1111";//UPLOAD_ERR_NO_FILE
                            break;
                        case 6:
                            $mes="没有找到临时目录";//UPLOAD_ERR_NO_TMP_DIR
                            break;
                        case 7:
                            $mes="文件不可写";//UPLOAD_ERR_CANT_WRITE;
                            break;
                        case 8:
                            $mes="由于PHP的扩展程序中断了文件上传";//UPLOAD_ERR_EXTENSION
                            break;
                    }
                    echo $mes;
                }
        }
        return $uploadedFiles;
    }

     使用方法

    #html
    <form action="doAction3.php" method="post" enctype="multipart/form-data">
    
        请选择上传文件:<input type="file"  name="myFile[]"  /><br/>
        请选择上传文件:<input type="file"  name="myFile[]"  /><br/>
        请选择上传文件:<input type="file"  name="myFile[]"  /><br/>
        请选择上传文件:<input type="file"  name="myFile1"  /><br/>
        请选择上传文件:<input type="file"  name="myFile2"  /><br/>
        <input type="submit" value="上传"/>
    </form>
    
    #你需要先引用上面的封装几个函数的文件
    foreach($_FILES as $val){
        $mes=uploadFile($val);
        echo $mes;
    }
  • 相关阅读:
    paip.环境设置 mybatis ibatis cfg 环境设置
    paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型
    paip. java的 函数式编程 大法
    paip.函数方法回调机制跟java php python c++的实现
    paip.配置ef_unified_filter() failed ext_filter_module mod_ext_filter.so apache 错误解决
    paip. 解决java程序不能自动退出
    Paip.声明式编程以及DSL 总结
    paip. dsl 编程语言优点以及 常见的dsl
    paip.函数式编程方法概述以及总结
    paip.jdbc 连接自动释放的测试
  • 原文地址:https://www.cnblogs.com/CyLee/p/5725505.html
Copyright © 2011-2022 走看看