File upload php $_FILES undefined ошибка индекса

<?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>

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

Ответ 1

Первое назначение выдает предупреждение, если ничего не загружено, а тест 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>

Ответ 2

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

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

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

Ответ 3

<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>

Ответ 4

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

Кроме того, убедитесь, что ваша папка 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" и, соответственно, именяя файл обработчика PHP файлов.

Ответ 5

// Count total files
$countfiles = count($_FILES['event_Img']['name']);
for($i=0;$i<$countfiles;$i++){
    $filename = $_FILES['event_Img']['name'][$i];

    // Get extension
    $ext = end((explode(".", $filename)));
    move_uploaded_file($_FILES['event_Img']['tmp_name'][$i], "uploads/".$filename);
    $sqlBrand = 'INSERT INTO ot_event_images 
                SET 
                event_id=:event_id, 
                imagepath=:imagepath, 
                imagemimetype=:imagemimetype';
    $query2 = $conn->prepare($sqlBrand);
    $query2->bindParam(':event_id', $eventid);
    $query2->bindParam(':imagepath', $filename);
    $query2->bindParam(':imagemimetype', $ext);
    $status2 = $query2->execute();
}
if($status2)
{

    echo "File upload successfully";
}
else
{
    echo "error";
}

Ответ 6

1. You hadn't mention name value in your submit button.
2. Use isset function.

<html>
<body>

<form action="" method="POST" enctype="multipart/form-data">
    <input type="file" name="file"><br><br>
    <input type="submit" value="Submit" name="submit">
</form>

</body>
</html>



<?php

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

$name = $_FILES["file"]["name"];

echo $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';
          }
    }
}       
?>