загрузить файл php $ _FILES undefined index error

<?php $name = $_FILES["file"]["name"]; //$size = $_FILES['file']['size'] //$type = $_FILES['file']['type'] $tmp_name = $_FILES['file']['tmp_name']; $error = $_FILES['file']['error']; if (isset ($name)) { if (!empty($name)) { $location = 'uploads/'; if (move_uploaded_file($tmp_name, $location.$name)){ echo 'Uploaded'; } } else { echo 'please choose a file'; } } ?> <form action="upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="file"><br><br> <input type="submit" value="Submit"> </form> 

Я получаю сообщение об ошибке «Уведомление: Неопределенный индекс». Enctype включен в тег формы, поэтому я не могу понять, что это такое .. может кто-нибудь мне помочь?

Первое задание выдает предупреждение, если ничего не загружено, и тест isset немного бесполезен.

Вы можете изменить свой код следующим образом

 <?php if (isset($_FILES["file"]["name"])) { $name = $_FILES["file"]["name"]; $tmp_name = $_FILES['file']['tmp_name']; $error = $_FILES['file']['error']; if (!empty($name)) { $location = 'uploads/'; if (move_uploaded_file($tmp_name, $location.$name)){ echo 'Uploaded'; } } else { echo 'please choose a file'; } } ?> <form action="test.php" method="POST" enctype="multipart/form-data"> <input type="file" name="file"><br><br> <input type="submit" value="Submit"> </form> 

Разрешенный неопределенный индекс в php при загрузке файла
из-за максимального ограничения размера файла
изменения в php.ini

 `max_execution_time` = 300 `max_input_time` = 240 `post_max_size` = 128M `upload_max_filesize` = 128M 

изменить в соответствии с вашими требованиями

 <form action="test.php" method="POST" enctype="multipart/form-data"> /* mistake here: change test.php to your source: upload.php */ <input type="file" name="file"><br><br> <input type="submit" value="Submit"> </form> 

Если вы используете весь свой код как один файл (который, как я подозреваю, вы есть), вам нужно сделать следующее с помощью условного оператора, который я тестировал (и работал) перед публикацией.

Кроме того, убедитесь, что в вашей папке « uploads » установлены соответствующие разрешения для записи, и она существует.

 <?php if(isset($_POST['submit'])){ $name = $_FILES["file"]["name"]; //$size = $_FILES['file']['size'] //$type = $_FILES['file']['type'] $tmp_name = $_FILES['file']['tmp_name']; $error = $_FILES['file']['error']; if (isset ($name)) { if (!empty($name)) { $location = 'uploads/'; if (move_uploaded_file($tmp_name, $location.$name)){ echo 'Uploaded'; } } else { echo 'please choose a file'; } } } ?> <form action="" method="POST" enctype="multipart/form-data"> <input type="file" name="file"><br><br> <input type="submit" name="submit" value="Submit"> </form> 

Примечания:

Я добавил условное утверждение:

 if(isset($_POST['submit'])) 

и я назвал кнопку отправки: (для работы в сочетании с условным выражением isset() )

 <input type="submit" name="submit" value="Submit"> 

NB: Если вы действительно используете свой опубликованный код в виде двух отдельных файлов, вы можете просто скопировать PHP в этот ответ, а также называть вашу существующую кнопку отправки в отдельной HTML-форме, как name="submit" (вызов вашей формы upload_form.htm например), как я показал выше, но сохраняя action="upload.php" и action="upload.php" файл обработчика загрузки PHP соответственно.