PHP文件域上传

PHP中使用文件域上传文件,需要几个步骤,首先先判断有无文件域,然后判断是否选择了文件,最后判断文件是否上传成功。

需要注意的是 表单中有文件域,必须将method设置为post, enctype设置为multipart/form-data

在文件上传时会给服务端以数组的形式返回几个值,如下:


    //array(5) {
    //  ["name"]=>
    //  string(25) "mmexport1534732827710.jpg"
    //  ["type"]=>
    //  string(10) "image/jpeg"
    //  ["tmp_name"]=>
    //  string(26) "C:WindowsTempphpD9E.tmp"
    //  ["error"]=>
    //  int(0)
    //  ["size"]=>
    //  int(145606)
    //}

其中''name"为上传文件名,"type"为上传文件类型,"tmp_name"为上传文件后所存放的路径,"error"为上传文件的错误问题,"size"为上传文件的大小。

具体代码如下:

<?php 
function upload() {
    if (!(isset($_FILES['avatar']))) {
        //是否有文件域
        $GLOBALS['message'] = '没有上传文件';
        return;
    }
    $avatar = $_FILES['avatar'];
    var_dump($avatar);
    if ($avatar['error']!==UPLOAD_ERR_OK) {
        //服务端没有接受到上传的文件
         $GLOBALS['message'] = '上传失败';
         return;
    }
    //接收到了文件
    //将文件从临时目录移动到网站范围内
    $source=$avatar['tmp_name'];   //源文件路径
    $target='./uploads/' . $avatar['name'];    //目标路径
    //==>./uploads/mmexport1534732827710.jpg
    $moved=move_uploaded_file($source, $target);
    if (!$moved) {
         $GLOBALS['message'] = '上传失败';
         return;
    }
    //移动成功===>上传成功
     $GLOBALS['message'] = '上传成功';

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


 ?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件域</title>
</head>
<body>
    <!-- 表单中有文件域,必须将method设置为post, enctype设置为multipart/form-data -->
    <!-- enctype 默认是urlencoded 格式   key1=value1&key2=value2 -->
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
        <input type="file" name="avatar">
        <button>上传</button>
        <?php if (isset($message)): ?>
            <?php echo $message ?>
        <?php endif ?>
    </form>
</body>
</html>
原文地址:https://www.cnblogs.com/Yaucheun/p/10308804.html