PHP 上传文件

  • PHP 上传文件

    PHP脚本可以与HTML表单一起使用,以允许用户将文件上载到服务器。最初将文件上载到临时目录中,然后通过PHP脚本重定位到目标目标。phpinfo.php页面中的upload_tmp_dir信息将用于文件上载的临时目录,并且可以上载的文件的最大允许大小表示为upload_max_filesize。这些参数在PHP配置文件php.ini中设置。
    上传文件的过程遵循以下步骤
    • 用户打开包含HTML表单的页面,该表单包含文本文件,浏览按钮和提交按钮。
    • 用户单击浏览按钮并选择要从本地PC上载的文件。
    • 所选文件的完整路径显示在文本字段中,然后用户单击提交按钮。
    • 所选文件将发送到服务器上的临时目录。
    • 在表单的action属性中指定为表单处理程序的PHP脚本检查文件是否已到达,然后将文件复制到目标目录中。
    • PHP脚本确认用户的成功上传。
    在写文件时,临时目录和目标位置都必须具有启用文件写入的权限。如果将其中任何一个设置为只读,则进程将失败。
    上传的文件可以是文本文件或图像文件或任何文档。
  • 创建上传表单

    以下HTM代码创建一个上传器表单。此表单将方法属性设置为post,并将enctype属性设置为multipart/form-data
    <?php
    if(isset($_FILES['image'])){
            $errors= array();
            $file_name = $_FILES['image']['name'];
            $file_size = $_FILES['image']['size'];
            $file_tmp = $_FILES['image']['tmp_name'];
            $file_type = $_FILES['image']['type'];
            $name_arr = explode('.',$_FILES['image']['name']);
            $file_ext=strtolower(end($name_arr));
    
            $extensions= array("jpeg","jpg","png");
            /* 规定可以上传的扩展名文件 */
            if(in_array($file_ext,$extensions)=== false){
                    $errors[]="不允许扩展,请选择一个jpeg或png文件。";
            }
            /* 规定可以上传的文件大小 */
            if($file_size > 2097152) {
                    $errors[]='文件大小必须不超过2 MB';
            }
    
            if(empty($errors)==true) {
                /* 把图片从临时文件夹内的文件移动到当前脚本所在的目录 */
                    move_uploaded_file($file_tmp,"./".$file_name);
                    echo "成功上传";
            }else{
                    print_r($errors);
            }
    }
    ?>
    <html>
    <body>
    <!-- action 默认为当前脚本 -->
    <form action = "" method = "POST" enctype = "multipart/form-data">
        <input type = "file" name = "image" />
        <input type = "submit" name="提交" />
    
        <ul>
            <li>文件名: <?php echo isset($_FILES['image']['name']) ? $_FILES['image']['name'] : '' ;  ?>
            <li>文件大小: <?php echo isset($_FILES['image']['size']) ? $_FILES['image']['size'] : '' ;   ?>
            <li>文件类型: <?php echo isset($_FILES['image']['type']) ? $_FILES['image']['type'] : '' ; ?>
        </ul>
    
    </form>
    
    </body>
    </html>
    
    上传成功显示:
    php upload