这是表格
form action="index.php" method="POST" enctype="multipart/form-data" >
<input type="file" name="image[]" multiple="multiple">
<input type="submit" value="upload">
</form>
我只是在if(!empty($_FILES['image'])){
时才尝试运行我的代码但由于某种原因,在提交没有文件并且只点击提交时数组不为空。
以下是其他代码,如果有帮助的话,谢谢。
<html>
图片上传
<form action="index.php" method="POST" enctype="multipart/form-data" >
<input type="file" name="image[]" multiple="multiple">
<input type="submit" value="upload">
</form>
<?php
include 'connect.php';
if(!empty($_FILES['image'])){
echo $_FILES['image']['error'];
$allowed = array('jpg', 'gif', 'png', 'jpeg');
$count = 0;
foreach($_FILES['image']['name'] as $key => $name){
$image_name = $name;
$tmp = explode('.', $image_name);
$image_extn = strtolower(end($tmp)); //can only reference file
$image_temp = $_FILES['image']['tmp_name'][$count];
$filesize = filesize($_FILES['image']['tmp_name'][$count]);
$count = $count +1;
if(count($_FILES['image']['tmp_name']) > 5){
echo "You can upload a maximum of five files.";
break;
}
else if(in_array($image_extn, $allowed) === false){
echo $name." is not an allowed file type<p></p>";
}
else if($filesize > 1024*1024*0.3){
echo $name." is too big, can be a maximum of 3MB";
}
else{
$image_path = 'images/' . substr(md5($name), 0, 10) . '.' . $image_extn;
move_uploaded_file($image_temp, $image_path);
mysql_query("INSERT INTO store VALUES ('', '$image_name', '$image_path')") or die(mysql_error());
$lastid = mysql_insert_id();
$image_link = mysql_query("SELECT * FROM store WHERE id = $lastid");
$image_link = mysql_fetch_assoc($image_link);
$image_link = $image_link['image'];
echo "Image uploaded.<p></p> Your image: <p></p><a href = $image_link>$image_path</a>";
}
}
}
else{
echo "Please select an image.";
}
?>
答案 0 :(得分:15)
这是$_FILES
数组在没有上传时的样子
Array ( [image] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )
所以它永远不会是空的。
错误代码4 [error] => 4
表示没有上传文件,错误code 0
表示没有错误,文件已上传,因此您可以查看
if($_FILES['image']['error']==0) {
// file uploaded, process code here
}
这是another answer关于SO。
答案 1 :(得分:7)
改为使用is_uploaded_file
PHP函数:
if(is_uploaded_file($_FILES['image']['tmp_name'])) {
//code here
}
答案 2 :(得分:4)
您首先应该查看PHP手册,因为 - 您不是第一个遇到该问题的人 - 解决方案已编写in there:
如果表单中没有选择上传文件,PHP将返回
$_FILES['userfile']['size']
为0,$_FILES['userfile']['tmp_name']
为无。
因此,如果您确实想知道是否已提交image
元素的任何文件,请检查它:
$noFile = $_FILES['image']['size'][0] === 0
&& $_FILES['image']['tmp_name'][0] === '';
是的,就这么简单。
您使用的测试:
empty($_FILE);
只会告诉您整个表单是否已提交。这是一个完整的例子:
$submitted = empty($_FILE);
if ($submitted) {
$noFile = $_FILES['image']['size'][0] === 0
&& $_FILES['image']['tmp_name'][0] === '';
if ($noFile) {
...
}
}
答案 3 :(得分:2)
检查值不为空:
map = ((SupportMapFragment) ((FragmentActivity)context).getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
答案 4 :(得分:2)
if($_FILES['image']['error'] === UPLOAD_ERR_OK) {
// Success code Goes here ..
}
UPLOAD_ERR_OK
如果没有错误则返回值0,文件已成功上传。
答案 5 :(得分:1)
http://php.net/manual/en/features.file-upload.post-method.php
如果表单中没有选择上传文件,PHP将返回 $ _FILES ['userfile'] ['size']为0,$ _FILES ['userfile'] ['tmp_name'] 没有。
每个“文件”上传字段都会显示一个数组条目,即使用户没有选择要上传的文件。
答案 6 :(得分:1)
我用多文件输入面对这个问题。 我发现用于检查是否已选择任何文件的是:
<?php
$size_sum = array_sum($_FILES['img']['size']);
if ($size_sum > 0) {
// at least one file has been uploaded
} else {
// no file has been uploaded
}
?>
答案 7 :(得分:0)
if(!empty($_FILES['image']['name'][0]) || !empty($_FILES['image']['name'][1]) ||
!empty($_FILES['image']['name'][2]))
或
for($1=0;$i<count($_FILES['image']);$i++){
if(!empty($_FILES['image']['name'][$i])){
// do something
}
}
答案 8 :(得分:-1)
if(isset($_FILES['file'])){//do some thing here}