最近在学PHP,从最基础的一些基本操作在学起。今天正好学到文件上传,于是自己写了一个文件上传的表单,想要实现上传一张图片的功能,可是今天在PHP脚本当中获取上传文件信息时却遇到了一些问题,查了百度也没解决,麻烦大家帮看一下。
环境:win10 + apache2.4+php5.7
PHP脚本关键部分代码:(完整代码见最后)
HTML页面显示:
可以发现,第一点,echo语句输出is_file的值为空,而var_dump输出is_file函数的值却不为空,这是为什么?而且这儿居然是false?
第二点,echo输出文件大小却提示文件状态有问题?这是什么原因?
第三点,echo和var_dump有什么区别吗?
哪位朋友能帮忙解答一下?
完整代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>添加分数</title>
<!-- Bootstrap -->
<link href="css/bootstrap.css" rel="stylesheet">
</head>
<body>
<div>
<div>
<div>
<?php
//如果表单已经提交
if(isset($_POST['submit'])){
$bdc = mysqli_connect('localhost','root','','elvis_store') or die('数据库连接失败');
$username = $_POST['username'];
$score = $_POST['score'];
$screenshoot=$_FILES['screenshoot']['name'];//获取上传图片的文件名
if(!empty($username) && !empty($score) && !empty($screenshoot)){
$isFile=is_file($_FILES['screenshoot']['name']);
echo '上传文件返回结果代码:'.$_FILES['screenshoot']['error'].'<br />';
echo '临时文件路径:'.$_FILES['screenshoot']['tmp_name'].'<br />';
echo 'echo输出是否是文件:'.(is_file($_FILES['screenshoot']['name'])).'<br />';
var_dump(is_file($_FILES['screenshoot']['name'])) . "<br />";
echo 'filesize输出文件大小:'.(filesize($screenshoot)/1024).'kb<br />';
echo '文件大小:'.($_FILES['screenshoot']['size']/1024).'kb<br />';
echo '文件名称:'.$_FILES['screenshoot']['name'].'<br />';
echo '文件类型:'.$_FILES['screenshoot']['type'].'<br />';
if(is_file($screenshoot) && /*$_FILES['screenshoot']['size']>0或者*/ filesize($screenshoot)>0){
$query = "INSERT INTO score_list (id,name,score,date,screenshoot) VALUES (0,'$username',now(),'$score','$screenshoot')";
$result = mysqli_query($query) or die('数据库数据添加失败');
echo '<h2>数据添加成功</h2>';
}
else
echo "只能上传图片类型并且图片大小不能大于";
}
else
echo "请填写完所有表单信息再提交!";
}
?>
<h4>添加我的分数</h4>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<!--利用HTML5创建一个文件上传大小限制,最大为10MB-->
<input type="hidden" name="MAX_FILE_SIZE" value="10240000">
<div>
<label for="username">姓名</label>
<input type="text" id="username" placeholder="姓名" name="username" value="<?php if(isset($username)) echo $username; ?>">
</div>
<div>
<label for="score">分数</label>
<input type="text" id="score" placeholder="分数" name="score" value="<?php if(isset($score)) echo $score; ?>">
</div>
<div>
<label for="screenshoot">分数截图上传</label>
<input type="file" id="screenshoot" name="screenshoot">
</div>
<input type="submit" name="submit" class="btn btn-info" value="提交">
</form>
</div>
<div >
<a href="./list_scores.php" class="btn btn-success">返回高分列表</a>
</div>
</div>
<script src="./js/jquery-3.2.1.js"></script>
<script src="./js/bootstrap.js"></script>
</body>
</html>
捷克轩
高山彝人