加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP文件上传可以与HTML表单一并使用

发布时间:2021-05-11 10:17:40 所属栏目:PHP教程 来源:互联网
导读:PHP脚本可以与HTML表单一起使用,以允许用户将文件上传到服务器。 最初文件上传到一个临时目录,然后通过PHP脚本重新写入到目标目录下。 phpinfo() 函数显示页面中的信息将用于文件上传的临时目录描述为 upload_tmp_dir ,并且可以上传的最大文件大小为 uplo

PHP脚本可以与HTML表单一起使用,以允许用户将文件上传到服务器。 最初文件上传到一个临时目录,然后通过PHP脚本重新写入到目标目录下。

phpinfo()函数显示页面中的信息将用于文件上传的临时目录描述为upload_tmp_dir,并且可以上传的最大文件大小为upload_max_filesize。 这些参数可在PHP配置文件php.ini中修改配置。

上传文件的过程有以下步骤 -

  • 用户打开包含具有文本文件,浏览按钮和提交按钮的HTML表单的页面。
  • 用户点击浏览按钮,从本地PC上选择要上传的文件。
  • 所选文件的完整路径出现在文本文件中,然后用户单击提交按钮。
  • 所选文件被发送到服务器上的临时目录中暂存。
  • 在表单的action属性中指定为表单处理程序的PHP脚本会检查文件是否已到达,然后将文件复制到预期的目录中。
  • PHP脚本确认了用户的成功。

像之前一样,当写入文件时,临时和最终位置都需要设置允许文件写入的权限。 如果其中任何一个设置为只读,则上传进程将失败。

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

创建一个上传表单

以下HTM代码创建一个上传表单。此表单将method属性设置为:postenctype属性设置为multipart/form-data注意: 这两个属性必须要这样设置,少一个都导致文件上传失败。参考下面一个简单的代码 -

<?php
   ini_set('display_errors', 'Off');
   $msg = '';
   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'])));

      $expensions= array("jpeg","jpg","png");

      if(in_array($file_ext,$expensions)=== 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);
         $msg = "上传成功~!";
      }else{
         print_r($errors);
      }
   }
?>
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="utf-8" />
        <title>PHP上传文件示例</title>
   </head>   
   <body>
      <center>
        <?php echo $msg;?>
      </center>
      <form action="index.php" method="POST" enctype="multipart/form-data">
         <input type="file" name="image" />
         <input type="submit" value="提交"/>
      </form>

   </body>   
</html>
PHP

它会产生以下结果 -

选择一个文件(任意类型),然后点击上传,应该在网站的images目录下看到上传的文件。

创建一个上传程序脚本

PHP中有一个名称为$_FILES的全局变量。 这个变量是一个关联的二维数组,并保存所有与上传文件相关的信息。 因此,如果上传表单中分配给输入name属性的值是文件,那么PHP将创建以下五个变量 -

  • $_FILES['file']['tmp_name'] - 上传的文件在Web服务器的临时目录中。
  • $_FILES['file']['name'] - 上传文件的实际名称。
  • $_FILES['file']['size'] - 上传文件的大小(以字节为单位)。
  • $_FILES['file']['type'] - 上传文件的MIME类型。
  • $_FILES['file']['error'] - 与此文件上传相关的错误代码。

示例

下面的例子应该允许上传图片,并显示上传的图片和此图片文件信息。

<?php
ini_set('display_errors', 'Off');
   $upload_image = '';
   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'])));
      $expensions= array("jpeg","jpg","png");
      if(in_array($file_ext,$expensions)=== false){
         $errors[]="只能上传 jpg, jpeg 和 png 图片文件";
      }

      if($file_size > 2097152) {
         $errors[]='文件大小不可超过 2 MB';
      }

      if(empty($errors)==true) {
         $upload_image = "images/".$file_name;
         move_uploaded_file($file_tmp,$upload_image);         
      }else{
         $upload_image = '';
         print_r($errors);
      }
   }
?>
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="utf-8" />
      <title>上传图片示例</title>
    </header>
   <body>
      <?php
      if($upload_image)
        echo '<center><img src="'.$upload_image.'"/></center><hr/>';
      ?>
      <form action = "index.php" method = "POST" enctype = "multipart/form-data">
         <input type = "file" name = "image" />
         <input type = "submit"/>
         <ul>
            <li>上传的文件名称: <?php echo $_FILES['image']['name'];  ?>
            <li>文件大小: <?php echo $_FILES['image']['size'];  ?>
            <li>文件类型: <?php echo $_FILES['image']['type'] ?>
         </ul>
      </form>
   </body>
</html>
PHP

它会产生以下结果


(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读