尝试上传文件,但php找不到我在表单中附加的文件,尽管已正确设置了encpart属性?

km0tfn4u  于 2023-05-16  发布在  PHP
关注(0)|答案(1)|浏览(90)

在纠正了一个错字,并成功地发送到我的数据库的主要文本字段到我的sql数据库后,我现在正试图上传用户发送的两个文件的形式(2张身份证的脸)到我的服务器。然而,尽管表单的标签中有encpart="multipart/form-data"和post方法,并且检查了输入字段的名称和它们在php文件中的使用,php还是找不到发送的文件。
我在我的php.ini中激活了文件上传,上传限制远高于我发送的测试图像的大小(分别为261和193 KB),最大文件上传为8 MB,post方法限制为250 MB。我用的是php 8.1.0。
html表单(除了文件输入之外的所有其他字段都可以工作):

<section id="form">
            <form action="submit_signature.php" method="post" encpart="multipart/form-data">
                <label for="nom">Nom :</label><br>
                <input type=text name="Nom" id="Nom" class="big" required><br>
                <label for="prenom">Prénom :</label><br>
                <input type=text name="Prénom" id="prenom" class="big" required><br>
                <label for="pseudo">Pseudonyme :</label><br>
                <input type=text name="Pseudonyme" id="pseudo" class="big" placeholder="Nom sous lequel vous apparaîtrez dans les dernières signatures."><br>
                <label for="daten">Date de naissance :</label><br>
                <input type=date name="Datenaissance" id="daten" min="1907-03-04" max="2006-01-01" class="smol" required><br>
                <label for="email">E-mail :</label><br>
                <input type=email name="Email" id="email" class="smol" placeholder="Adresse mail en cas de pépin pour vous contacter !" required><br>
                <label for="tel">N° de téléphone :</label><br>
                <input type=tel name="tel" id="tel" placeholder="+(X)XX X XX XX XX XX" class="smol" pattern="+[0-972]{3}-[0-9]{1}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}" required><br>
                <label for="idavant">Face avant de votre pièce d'identité :</label>
                <input type="file" id="idavant" name="idavant" value="download" required><br>
                <label for="idarriere">Face arrière de votre pièce d'identité :</label>
                <input type="file" id="idarriere" name="idarriere" value="download" required><br>
                <label for="motiv">Motivation :</label><br>
                <textarea name="Motivation" id="motiv" class="big" placeholder="Dites nous pourquoi vous signez cette pétition, si cela vous dit !"></textarea><br><br>
                <input type=submit name="Envoyer" id="envoyer" value="Envoyer">
                <input type=reset name="Réinitialiser" id="reset" value="Réinitialiser">
            </form>
            <br>
            <p id="formwarning">NB : Votre signature ne sera pas prise en compte tant que votre identité ne sera pas vérifiée, et votre inscription certifiée par nos administrateurs™.</p>
        </section>

我用来检查然后将文件发送到服务器的php代码。我只对idavant文件做过测试。

// Tests if the file exists and doesn't have errors
    if (isset($_FILES['idavant']['tmp_name']) && $_FILES['idavant']['error'] == 0) {
        // Tests if the file isn't too big
        if ($_FILES['idavant']['size'] <= 15000000)
        {
                // Tests if it is an authorized file extension
                $fileInfo = pathinfo($_FILES['idavant']['name']);
                $extension = $fileInfo['extension'];
                $allowedExtensions = ['jpg', 'jpeg', 'gif', 'png'];
                if (in_array($extension, $allowedExtensions))
                {
                        // If all conditions are satisfied, file is uploaded definitively to the server
                        move_uploaded_file($_FILES['idavant']['tmp_name'], 'uploads/' . basename($_FILES['idavant']['name']));
                        echo "L'envoi a bien été effectué !";
                } else {
                    error_log("Erreur de téléchargement du fichier\n", 3, "log1.txt");
                }
        } else {
            error_log("Erreur de téléchargement du fichier : Le fichier est trop gros;\n", 3, "log1.txt");
        }
    } else {
        error_log("Erreur de téléchargement du fichier : Erreur dans la procédure de transfert entre les pages;\n", 3, "log1.txt");
        //Tests if the file exists. Always throws the file doesn't exist error.
        if (isset($_FILES['idavant']['tmp_name'])) {
            echo "Le fichier existe.";
        } else {
            echo "Le fichier n'existe pas";
        }
        //Tests if the file hasn't errors attached to it. This time, it tells me that there is no errors.
        if ($_FILES['idavant']['error'] == 0) {
            echo "Le fichier est bien sans erreur";
        } else {
            echo "bah non mdr";
        }
        //Dumping the content of the different $_FILES variable. Returns an empty array and two NULLS.
        echo "<br/>".var_dump($_FILES);
        echo "<br/>".var_dump($_FILES['idavant']);
        echo "<br/>".var_dump($_FILES['idarriere']);
    }
2nbm6dog

2nbm6dog1#

我已经纠正了我的代码中的错别字指出的评论+另一个,我的一个朋友显示(使用错误的上传文件夹)。在那之后,经过一些测试,我的代码现在可以工作了,所以我将把更正后的代码留在那里:

if (isset($_FILES['idarriere']['tmp_name']) && $_FILES['idarriere']['error'] == 0) {
        // Tests if the file isn't too big
        if ($_FILES['idarriere']['size'] <= 15000000)
        {
                // Tests if it is an authorized file extension
                $fileInfo = pathinfo($_FILES['idarriere']['name']);
                $extension = $fileInfo['extension'];
                $allowedExtensions = ['jpg', 'jpeg', 'gif', 'png'];
                if (in_array($extension, $allowedExtensions))
                {
                        // If all conditions are satisfied, file is uploaded definitively to the server
                        move_uploaded_file($_FILES['idarriere']['tmp_name'], 'fichiers/' . basename($_FILES['idarriere']['name']));
                        $target_file2 = 'fichiers/'.basename($_FILES['idarriere']['name']);
                        echo " L'envoi de la face verso a bien été effectué !";
                } else {
                    error_log("Erreur de téléchargement du fichier\n", 3, "log1.txt");
                }
        } else {
            error_log("Erreur de téléchargement du fichier : Le fichier est trop gros;\n", 3, "log1.txt");
        }
    } else {
        error_log("Erreur de téléchargement du fichier : Erreur dans la procédure de transfert entre les pages;\n", 3, "log1.txt");
        //Tests if the file exists.
        if (isset($_FILES['idarriere']['tmp_name'])) {
            echo " Le fichier existe.";
        } else {
            echo " Le fichier n'existe pas";
        }
        //Tests if the file hasn't errors attached to it.
        if ($_FILES['idarriere']['error'] == 0) {
            echo " Le fichier est bien sans erreur";
        } else {
            echo " Il semble y avoir une erreur dans le fichier.";
        }
    }```

相关问题