PHP 文件上传

PHP 文件上传

PHP脚本可以与HTML表单一起使用,允许用户将文件上传到服务器。最初,文件被上传到临时目录,然后由PHP脚本重定位到目标位置。

phpinfo.php 页面中提供了临时目录的信息,用于文件上传的临时目录的名称为 upload_tmp_dir ,允许上传的最大文件大小为 upload_max_filesize 。这些参数存储在PHP配置文件 php.ini 中。

上传文件的过程如下:

  • 用户打开包含HTML表单的页面,其中包含文本字段、浏览按钮和提交按钮。

  • 用户点击浏览按钮,从本地计算机选择要上传的文件。

  • 所选文件的完整路径显示在文本字段中,然后用户点击提交按钮。

  • 所选文件被发送到服务器上的临时目录。

  • 在表单的action属性中指定的PHP脚本作为表单处理程序,检查文件是否已到达,然后将文件复制到目标目录。

  • PHP脚本向用户确认操作成功。

通常在编写文件时,临时目录和最终位置都需要设置写入文件的权限。如果其中一个设置为只读,操作将失败。

上传的文件可以是文本文件、图像文件或任何文档。

创建上传表单

下面的HTML代码创建了一个上传表单。这个表单的方法属性设置为 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'];
      file_ext=strtolower(end(explode('.',_FILES['image']['name'])));

      extensions= array("jpeg","jpg","png");

      if(in_array(file_ext,extensions)=== false){errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }

      if(file_size>2097152){errors[]='File size must be excately 2 MB';
      }

      if(empty(errors)==true){
         move_uploaded_file(file_tmp,"images/".file_name);
         echo "Success";
      }else{
         print_r(errors);
      }
   }
?>
<html>
   <body>

      <form action="" method="POST" enctype="multipart/form-data">
         <input type="file" name="image" />
         <input type="submit"/>
      </form>

   </body>
</html>

它将产生以下结果−
PHP 文件上传

创建一个上传脚本

有一个全局的PHP变量叫做 $_FILES 。这个变量是一个关联双维数组,保存了所有与上传文件相关的信息。所以,如果上传表单中的input元素的name属性的值为 file ,那么PHP会创建以下五个变量:

  • $_FILES['file']['tmp_name'] - 在Web服务器上的临时目录中的上传文件。

  • $_FILES['file']['name'] - 上传文件的实际名称。

  • $_FILES['file']['size'] - 上传文件的字节大小。

  • $_FILES['file']['type'] - 上传文件的MIME类型。

  • $_FILES['file']['error'] - 与该文件上传相关的错误代码。

示例

下面的示例应该允许上传图片,并返回上传文件的相关信息。

<?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'];
      file_ext=strtolower(end(explode('.',_FILES['image']['name'])));

      extensions= array("jpeg","jpg","png");

      if(in_array(file_ext,extensions)=== false){errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }

      if(file_size>2097152) {errors[]='File size must be excately 2 MB';
      }

      if(empty(errors)==true) {
         move_uploaded_file(file_tmp,"images/".file_name);
         echo "Success";
      }else{
         print_r(errors);
      }
   }
?>
<html>
   <body>

      <form action = "" method = "POST" enctype = "multipart/form-data">
         <input type = "file" name = "image" />
         <input type = "submit"/>

         <ul>
            <li>Sent file: <?php echo _FILES['image']['name'];  ?>
            <li>File size: <?php echo_FILES['image']['size'];  ?>
            <li>File type: <?php echo $_FILES['image']['type'] ?>
         </ul>

      </form>

   </body>
</html>

它将产生以下结果 −

PHP 文件上传

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程