所以我有这样的表格:
<form enctype="multipart/form-data" action="profile.php" method="post">
<input type="file" name="pics"><br>
<input type="submit" name="submitpic">
</form>
在尝试识别是否存在实际选择的文件时,似乎是$ _POST ['pics']; 不起作用,或者没有价值。
if(isset($_POST['submitpic'])){
if($_POST['pics']!=NULL){
$dir = 'id_data/';
$pic_ext = pathinfo($_FILES['pics']['name']);
$pic_unique_id = $userid;
$pic_name = $pic_unique_id.".".$pic_ext['extension'];
if(move_uploaded_file($_FILES['pics']['tmp_name'],"$dir/$pic_name")){
echo "yes";
}
}
}
?>
还有另一种检查文件是否被选中的方法? 谢谢!
答案 0 :(得分:0)
您可以使用
检查文件是否在POST请求中isset($_FILES['pics'])
,否则
move_uploaded_file($_FILES['pics']['tmp_name'],"$dir/$pic_name")
移动文件时为true,因此如果上传文件但由于某些原因未移动(例如由于目录权限),则无论如何都会返回false。
答案 1 :(得分:0)
出于测试目的,我将在EMPTY提交后显示以下代码及其输出:
<form enctype="multipart/form-data" action="" method="post">
<input type="file" name="pics"><br>
<input type="submit" name="submitpic">
</form>
<?php
var_dump($_POST);
var_dump($_FILES);
var_dump(isset($_FILES['pics']));
var_dump(empty($_FILES['pics']['name']));
array (size=1)
'submitpic' => string 'Submit Query' (length=12)
array (size=1)
'pics' =>
array (size=5)
'name' => string '' (length=0)
'type' => string '' (length=0)
'tmp_name' => string '' (length=0)
'error' => int 4
'size' => int 0
boolean true
boolean true
所以pics
位于$_FILES
数组中,即使它是空的,也始终检查isset()
。您需要检查name
是否为空。然后你可以这样做:
if(!empty($_FILES['pics']['name']))
代替if($_POST['pics']!=NULL)
。但我敢打赌,你还需要一些更多的验证。
答案 2 :(得分:0)
由于您要提交“文件”,因此您必须使用$_FILES
检查来检查您的后端。方法如下:
if(isset($_FILE))
{
//Enter your code here.
}