2015-03-27 1 views
2

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

Загрузить Форма:

<body> 
    <p> 
     <form action='uploadform.php' method='post' enctype='multipart/form-data'> 
      Select the files you would like to upload. 
      <input type='file' name='fileToUpload[]' id='fileToUpload' mozdirectory webkitdirectory directory multiple /> 
      <input type='submit' value='Upload Image' name='submit'> 
     </form><br> 
    The files will be uploaded to a folder named '".$_SESSION['filename']."'.<br> 
    </p> 
</body> 

нескольких файлов цикл загрузки (uploadform.php:

if (isset($_POST["submit"])){ 
    foreach ($_FILES['fileToUpload']['name'] as $i => $name) { 
     $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"][$i]); 
     $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
     if (strlen($_FILES['fileToUpload']['name'][$i]) > 1) { 
      if (move_uploaded_file($_FILES["fileToUpload"]["name"][$i], $target_file)) { 
       echo "The file'". basename($_FILES["fileToUpload"]["name"][$i]). "' has been uploaded to the server."; 
      } else { 
       echo "<br>*** ERROR ***<br>"; 
       echo "Current File basename: ".basename($_FILES["fileToUpload"]["name"][$i])."<br>"; 
       echo "Current File non-basename: ".$_FILES["fileToUpload"]["name"][$i]."<br>"; 
       echo "Current File Path: ".$target_file."<br>"; 
       echo "Image file type: ".$imageFileType."<br>"; 
      } 
      $count++; 
     } 
    } 
} 

При загрузке одного или нескольких файлов с формой, она переходит к другому заявлению вторя «ERROR ". Ошибка журнала ошибок Apache, поэтому я не знаю, что не так с кодом.

Я попытался повторить переменные, используемые в lo op ($ _FILES ["fileToUpload"] ["name"] [$ i], $ target_file и $ imageFileType), но, похоже, все в порядке.

+0

Почему этот вопрос помечен 'ftp'? – arkascha

+0

'Если имя файла не является допустимым файлом загрузки, то никаких действий не будет, и move_uploaded_file() вернет FALSE. '[php.net] (http://php.net/manual/en/function.move-uploaded-file.php). Вы пытались отлаживать свой код шаг за шагом? – empiric

+0

Furhtermore, почему вы используете '$ _FILES [" fileToUpload "] [" name "] [$ i]', а не '$ name' внутри вашего цикла foreach? Разве это не должно быть так? – empiric

ответ

0

Переменная $_FILES["fileToUpload"]["name"][$i] была не одна, что цикл должен был использовать.

Изменив все экземпляры $_FILES["fileToUpload"]["name"][$i] на $name (значение $_FILES["fileToUpload"]["tmp_name"][$i]), ошибка исчезла.

0

Я бы поставил весь цикл Еогеасп в примерочных поймать блок и увидеть, что, если происходит исключение:

try{ 
    // your foreach loop here: 
    } 
catch(\Exception $e) 
{ 
    echo $e->getMessage(); 
} 
+0

Эхо выглядит пустым; нет ошибки исключения. – Ben

Смежные вопросы