2016-08-05 3 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: Неопределенный индекс: вложения в ... on line ... (ну, он также определяется с помощью form method post!)
3: Недопустимый аргумент, предоставленный foreach() в ... on line ... (что совершенно очевидно, поскольку указанные выше ошибки предотвращают форс-аут ч делать свою работу правильно)

Да, я уверен, что я на самом деле с помощью POST. Я также попытался изменить имя ввода файла с attachments на любой другой, однако сценарий остается тем же.

Add 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; 
Смежные вопросы