2016-08-05 50 views
0

我使用这个代码来处理上传的文件:许多错误处理文件上传的PHP

mkdir("files/" . $id, 0700); 
$path = "files/" . $id; 
$count = 0; 

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
    { 
     foreach($_FILES['attachments']['name'] as $f => $name) 
     { 
      if($_FILES['attachments']['error'][$f] == 4) 
      { 
       continue; 
      } 
      if($_FILES['attachments']['error'][$f] == 0) 
      { 
       if(move_uploaded_file($_FILES["attachments"]["tmp_name"][$f], $path.$name)) 
       { 
        $count++; 
       } 
      } 
     } 
    } 

$id是从数据库中取出一个随机数。此外,我使用这个标记:

<input type="file" id="attachments" name="attachments[]" multiple="multiple" accept="*"> 

虽然完全相同的代码收到工作出色,现在抛出错误的数字我真的不能推断:

1上:mkdir() :文件存在...在线...(< - 现在,它不是理所当然的!)
2:未定义的索引:附件在...在线...(好吧,它的定义也使用表单方法post!)
3:提供给foreach()in ... on line ...的无效参数(这很清楚,因为上述错误确实阻止了foreac正确地做其工作1H)

是的,我确信,我使用POST实际上。我也尝试将文件输入的名称从attachments更改为任何其他名称,但情况保持不变。

添加enctype="multipart/form-data"已经完成了。

回答

0

1]检查该文件夹权限0777的天气,您可以创建目录,或者不

2]发布形式之后。确保你的表单有enctype = multipart/form-data标签。 在你的文件中,请检查

echo "<pre>"; 
print_r($_FILES); 
exit; 

如果你正在获取任何数据?如果获取数据然后继续前进。

+0

“是enctype =多部分/格式数据标签”,其中申请? – Muhamed

0

首先检查您的$ id是否确实包含某些内容,其次您的表单应该使用输入类型文件的属性enctype = multipart/form-data

<form action="test.php" method="post" enctype="multipart/form-data"> 

现在你的情况,你会得到的文件,你的阵列之前,你执行任何工作,看到的print_r附件:

echo "<pre>"; 
print_r($_FILES); 
exit;