• 关于单文件上传的封装


    <?php 
    //$fileInfo=$_FILES['myFile'];
    /**
    * @param $fileInfo string  上传的文件参数 name 
    * @param uploadPath string   文件上传的路径,默认的为uploads
    * @param allowExt   array   运行文件上传的类型 默认的为:'jpeg','jpg','gif','png'
    * @param maxSize  int   允许文件上传的最大限制,默认为2兆
    */
    
    function uploadFile($fileInfo,$uploadPath = 'uploads',$flag=true,$allowExt=array('jpeg','jpg','gif','png'),$maxSize = 2097152){
        // 判断错误号
        if ($fileInfo ['error'] > 0) {
            switch ($fileInfo ['error']) {
                case 1 :
                    $mes = '上传文件超过了PHP配置文件中upload_max_filesize选项的值';
                    break;
                case 2 :
                    $mes = '超过了表单MAX_FILE_SIZE限制的大小';
                    break;
                case 3 :
                    $mes = '文件部分被上传';
                    break;
                case 4 :
                    $mes = '没有选择上传文件';
                    break;
                case 6 :
                    $mes = '没有找到临时目录';
                    break;
                case 7 :
                case 8 :
                    $mes = '系统错误';
                    break;
            }
            echo ( $mes );
            return false;
        }
        $ext = pathinfo ( $fileInfo ['name'], PATHINFO_EXTENSION );
    //     $allowExt = array (
    //             'jpeg',
    //             'jpg',
    //             'png',
    //             'gif' 
    //     );
        if(!is_array($allowExt)){
            exit('系统错误');
        }
        // 检测上传文件的类型
        if (! in_array ( $ext, $allowExt )) {
            exit ( '非法文件类型' );
        }
        //$maxSize = 2097152; // 2M
                          // 检测上传文件大小是否符合规范
        if ($fileInfo ['size'] > $maxSize) {
            exit ( '上传文件过大' );
        }
        //检测图片是否为真实的图片类型
        //$flag=true;    
        if($flag){
            if(!getimagesize($fileInfo['tmp_name'])){
                exit('不是真实图片类型');
            }
        }
        // 检测文件是否是通过HTTP POST方式上传上来
        if (! is_uploaded_file ( $fileInfo ['tmp_name'] )) {
            exit ( '文件不是通过HTTP POST方式上传上来的' );
        }
        //$uploadPath = 'uploads';
        if (! file_exists ( $uploadPath )) {
            mkdir ( $uploadPath, 0777, true );
            chmod ( $uploadPath, 0777 );
        }
        $uniName = md5 ( uniqid ( microtime ( true ), true ) ) . '.' . $ext;
        $destination = $uploadPath . '/' . $uniName;
        if (! @move_uploaded_file ( $fileInfo ['tmp_name'], $destination )) {
            exit ( '文件移动失败' );
        }
        
        //echo '文件上传成功';
    //     return array(
    //         'newName'=>$destination,
    //         'size'=>$fileInfo['size'],
    //         'type'=>$fileInfo['type']
    //     );
        return $destination;
    }

    函数的调用如下doAction.php:

    <?php 
    header('content-type:text/html;charset=utf-8');
    include_once 'upload.func.php';
    $fileInfo=$_FILES['myFile'];
    // $newName=uploadFile($fileInfo);
    // echo $newName;
    // $newName=uploadFile($fileInfo,'imooc');
    // echo $newName;
    //$allowExt='txt';
    $allowExt=array('jpeg','jpg','png','gif','html','txt');
    $newName=uploadFile($fileInfo,'imooc',false,$allowExt);
    echo $newName;

    前段代码如下:

    <!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>Insert title here</title>
    </head>
    <body>
    <form action="doAction3.php" method="post" enctype="multipart/form-data">
    <!-- <input type="hidden" name="MAX_FILE_SIZE" value='176942' /> -->
    请选择您要上传的文件:<input type="file" name='myFile' />
    <!-- <input type="file" name="myFile"  accept="image/jpeg,image/gif,image/png"/><br /> -->
    <input type="submit" value="上传文件" />
    </form>
    </body>
    </html>
  • 相关阅读:
    【原创翻译】The Free Lunch Is Over
    【原创】基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结(二)
    【原创】基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结(一)
    实现内容提供者步骤
    为什么需要内容提供者
    aidl的应用场景
    aidl介绍
    百度音乐盒框架
    通过接口方式调用服务里面的方法
    通过bindservice方式调用服务方法里面的过程
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/5153666.html
Copyright © 2020-2023  润新知