web-dev-qa-db-fra.com

fichier upload php $ _FILES erreur d'indexation non définie

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

j'obtiens un message d'erreur "Remarque: index non défini". Le enctype est inclus dans la balise de formulaire, donc je ne peux pas comprendre ce que c'est .. quelqu'un peut-il m'aider?

11
michAmir

La première affectation lance un avertissement, si rien n'est téléchargé et que le test isset est un peu inutile.

Vous pouvez modifier votre code comme suit

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

Index non défini résolu en php lors du téléchargement du fichier
en raison de la taille maximale du fichier
changements dans php.ini

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

changer selon vos besoins

5
Randeep Singh

Si vous utilisez votre code entier comme un fichier (que je soupçonne que vous êtes), alors vous devez faire ce qui suit en utilisant une instruction conditionnelle, qui J'ai testé (et travaillé) avant de poster.

De plus, assurez-vous que votre dossier uploads dispose des autorisations d'écriture appropriées et qu'il existe.

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

Notes de bas de page:

J'ai ajouté une déclaration conditionnelle:

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

et j'ai nommé le bouton soumettre: (pour travailler en conjonction avec la conditionnelle isset() )

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

NB: Si vous utilisez en fait votre code publié comme deux fichiers séparés, vous pouvez simplement copier le PHP dans cette réponse, en plus de nommer votre bouton d'envoi actuel défini dans un formulaire HTML séparé comme name="submit" (en appelant votre formulaire upload_form.htm par exemple) comme je l'ai montré ci-dessus, tout en conservant le action="upload.php" et en nommant le PHP fichier de gestionnaire de téléchargement en conséquence.

2
Funk Forty Niner
// 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";
}
0
Salman Aziz
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';
          }
    }
}       
?>
0
Kumar Pal