2016-08-05 30 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;