文件上传

type属性为 file 的 input 元素可以通过表单提交文件(上传文件),服务端PHP可以通过$_FILES获取上传的文件信息

<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  
  var_dump($_FILES); //接收文件,使用一个 叫做 $_FILES 超全局成员
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
 
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">

    <input type="text" name="bar"> -->
    <input type="file" name="img">

    <button>提交</button>

  </form>
</body>
</html>

①如果一个表单中有文件域(文件上传),必须将表单的 method 设置为 post , enctype 设置为 multipart / form-data

②接收文件,使用一个叫做 $_FILES 超全局成员

 

文件上传案例

<?php

   if($_SERVER['REQUEST_METHOD']==='POST')
   {
        postback();
   }


   function postback(){
        if(!isset($_FILES['fileUpload'])){
        $GLOBALS['message'] ="客户端提交的表单内容中根本没有文件域";
        return;
        }

        $fileUpload=$_FILES['fileUpload'];

        echo $fileUpload['error'];
        if($fileUpload['error'] !== UPLOAD_ERR_OK){
            $GLOBALS['message']="上传失败"; //服务端没有接收到上传的文件
            return;
        }

        $sourceDir = $fileUpload['tmp_name'];  //源文件在哪
        $targetDir = './targetDir/' . $fileUpload['name']; //目标放在哪
        $moved=move_uploaded_file($sourceDir,$targetDir);

        if(!$moved){
            $GLOBALS['message']="上传失败";
            return;
        }
   }


?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
    <input type="file" name="fileUpload">
    <button>上传</button>

    <?php  if(isset($message)):  ?>
    <?php  echo $message;?>
    <?php  endif ?>
</form>
</body>
</html>

① $_FILES 是一个关联数组,键为表单的 name , 内容如下:

  array(1) {  

   ["fileUpload"]=>  

   array(5) {     

  ["name"]=>   

    string(17) "demo.jpg"    

   ["type"]=>    

   string(10) "image/jpeg"  

     ["tmp_name"]=>   

    string(27) "C:\Windows\Temp\php786C.tmp"   

    ["error"]=>    

   int(0)    

   ["size"]=>   

    int(29501)  

   }

}

 

②修改 php.ini 中的 post_max_size配置,让服务端可以接受更大的请求体体积

③修改 php.ini中的 upload_max_filesize 配置,让服务端支持更大的单个上传文件

posted @ 2019-09-25 21:11  shanlu  阅读(162)  评论(0编辑  收藏  举报