• php单文件上传和多文件上传


    php文件上传-配置php.ini文件以及预定义变量$_FILES

    一:配置 php.ini 文件

    想要顺利的实现上传功能,首要做的就是在 php.ini 中开启文件上传,并对其中的一些参数作出合理的设置。找到 File Upioads 项,可以看到下面有 3 属性,表示含义如下:

    • file_uploads:如果值为 on,说明服务器支持上传文件;如果为 off,则表示不支持。

    • upload_tem_dir:上传文件临时目录。在文件被成功上传之前,文件首先存放到服务器端的临时目录,如果想要指定位置,可在这里设置,否则使用系统默认目录就可以了。

    • upload_max_filesize: 服务器允许上传的文件的最大值,以MB为单位。系统默认是 2MB,用户可以自行设置。

    除了File Upolads项,还有几个属性也会影响到上传文件的功能。

    • max_execution_time:PHP 中一个指令所能执行的最长时间,单位是秒;

    • memory_limit : PHP 中一个指令所分配的没存空间,单位是MB;

    说明:

    1.如果使用集成的安装包来配置PHP 的开发环境,上述介绍的这些配置信息按默认已经配置好了!

    2.如果要上传超大的文件,需要对 php.ini 的一些参数进行修改,其中包括 upload_max_filesize服务器允许上传的文件的最大值,max_execution_time 一个指令所能执行的最长时间和memory_limit一个指令所分配的内存空间!

    二:预定义变量$_FLIES

    $_FLIES 变量储存的事是上传文件的相关信息,这些信息对于上传功能有很大的作用。该变量是一个二维数组。预定义变量$_FILES 元素说明如下表:

    下面实例创建一个上传文件域,通过$_FILES变量输出上传的文件资料。具体示例代码如下

    <html>
    
    <body>
    
    <table width="500" border="1" cellpadding="0" cellspacing="0">
    
        <!--上传文件的 form表单,必须有 enctype 属性-->
    
        <form method="post" about="" enctype="multipart/form-data">
    
        <tr>
    
            <td width="150" height="30" align="right" valign="middle">请选择上传文件:</td>
    
            <!--上传文件域,type类型为file-->
    
            <td width="250"><input type="file" name="upfile"></td>
    
            <!-- 提交按钮-->
    
            <td width="100"><input type="submit" name="submit" value="上传"></td>
    
    </tr>
    
    </form>
    
    </table>
    
    </body>
    
    </html>
    
    <?php
    
    header("Content-Type:text/html; charset=utf-8");
    
    if(!empty($_FILES)){                                //判断变量$_FILES是否为空
    
        foreach ($_FILES['upfile'] as $name => $value){ //使用 foreach 循环输出上传文件信息的名称和值
    
            echo $name,"=".$value."<br>";
    
        }
    
    }
    
    ?>

    输出结果为:

    PHP文件上传-move_uploaded_file()函数的使用详解

    下面的实例创建一个上传表单,允许上传文件大小为 1MB 一下的文件,具体的示例代码如下:

    <html>
    
    <body>
    
    <table width="500" border="1" cellpadding="0" cellspacing="0">
    
        <!--上传文件的 form表单,必须有 enctype 属性-->
    
        <form method="post" about="" enctype="multipart/form-data">
    
        <tr>
    
            <td width="150" height="30" align="right" valign="middle">请选择上传文件:</td>
    
            <!--上传文件域,type类型为file-->
    
            <td width="250"><input type="file" name="upfile"></td>
    
            <!-- 提交按钮-->
    
            <td width="100"><input type="submit" name="submit" value="上传"></td>
    
    </tr>
    
    </form>
    
    </table>
    
    </body>
    
    </html>
    
    <?php
    
    header("Content-Type:text/html; charset=utf-8");
    
    if(!empty($_FILES)){                                //判断变量$_FILES是否为空
    
        $fileinfo = $_FILES['upfile'];
        if($fileinfo['size']>0 && $fileinfo['size']<1000000){
            move_uploaded_file($fileinfo['tmp_name'], $fileinfo['name']);
            echo '上传成功';
        }else{
            echo '文件太大或未知';
        }
    
    }
    
    ?>

    说明:

    使用 move_uploaded_file()函数上传文件,在创建 form表单时,必须设置 form 表单的 enctype="multipart/form-data“。

    PHP文件上传-多文件上传的示例代码详解

    下面的实例有 2个文件上传域,文件域的名字为 u_file[],提交后上传的文件信息都会被保存到$_FILES['u_file']中,生成多为数组,读取数组信息,并且上传文件,具体实例代码如下:

    <html>
    
    <body>
    
    <table border="1" cellpadding="0" cellspacing="0">
    
        <!--上传文件的 form表单,必须有 enctype 属性-->
    
        <form method="post" about="" enctype="multipart/form-data">
    
        <tr>
    
            <td>请选择上传文件:</td>
    
            <!--上传文件域,type类型为file-->
    
            <td><input type="file" name="u_file[]"></td>
            <td><input type="file" name="u_file[]"></td>
    
            <!-- 提交按钮-->
    
            <td><input type="submit" name="submit" value="上传"></td>
    
    </tr>
    
    </form>
    
    </table>
    
    </body>
    
    </html>
    
    <?php
    
    header("Content-Type:text/html; charset=utf-8");
    
    if(!empty($_FILES['u_file']['name'])){  
        $file_name = $_FILES['u_file']['name'];
        $file_tmp_name = $_FILES['u_file']['tmp_name'];
        for($i=0;$i<count($file_name);$i++){
            if($file_name[$i] != ''){
                move_uploaded_file($file_tmp_name[$i], $i.$file_name[$i]);
                echo '文件'.$file_name[$i].'上传成功<br>';
            }
        }
    
    }
    
    ?>

    输出结果如下:

     欢迎QQ交流讨论:965794175

  • 相关阅读:
    python:利用asyncio进行快速抓取
    os.path.exists(path) 和 os.path.lexists(path) 的区别
    isdigit()判断是不是数字
    switf资源
    51cto培训课程
    51cto运维培训课程
    Python: 在Unicode和普通字符串之间转换
    VC++ CopyFile函数使用方法
    Eclipse断点调试
    AFNetworking2.0后 进行Post请求
  • 原文地址:https://www.cnblogs.com/chenyingying0/p/12972474.html
Copyright © 2020-2023  润新知