php-使用isset($_文件),但它';它总是回归真实?
我想知道,每次刷新页面时,我是否必须以某种方式清除$\u文件,或者为什么它会回想起变量已设置且不为空?当我第一次加载或重新加载页面时,通过使用print\r,页面显然至少是空的php-使用isset($_文件),但它';它总是回归真实?,php,forms,Php,Forms,我想知道,每次刷新页面时,我是否必须以某种方式清除$\u文件,或者为什么它会回想起变量已设置且不为空?当我第一次加载或重新加载页面时,通过使用print\r,页面显然至少是空的 <html> <form action="" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="fi
<html>
<form action="" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
</html>
<?php
if(isset($_FILES["file"]) && !empty($_FILES["file"])){
echo 'You have just uploaded '. $_FILES["file"]["name"];
}
?>
文件名:
检查表单是否已发布,否则请在页面加载时输入您的代码
<?php
if($_POST['submit']=="submit"){
if(isset($_FILES["file"]) && !empty($_FILES["file"])){
echo 'You have just uploaded '. $_FILES["file"]["name"];
}
}
?>
action=“”
表示您将数据发布到当前页面,但发布数据后,当您刷新页面时,浏览器将询问您是否重新发布数据,如果您按“是”,则数据将再次发布
正确的解决方案是在发布后重定向到当前页面。实际上,您正面临这个问题,因为一旦您通过选择文件提交,浏览器会缓存页面响应&当您通过
F5
或右键单击->重新加载
刷新页面响应时,它只会返回缓存的结果。您可以通过一个虚拟的GET
request重新加载旧代码来尝试它,它将正常工作。例如:
如果此页面的url为:http://localhost/file.php
然后在地址栏中键入:http://localhost/file.php/?dummy=abc
然后您会发现您的代码工作正常。。。因此,您不仅必须验证$\u文件,而且还必须验证$\u文件[“文件”][“名称”]是否正常
试试这个,你不会有任何麻烦
<html>
<form action="" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
</html>
<?php
if(isset($_FILES["file"]) && !empty($_FILES["file"]["name"])){
echo 'You have just uploaded '. $_FILES["file"]["name"];
}
?>
文件名:
不是问题的解决方案,但您只能使用!empty()?