在纠正了一个错字,并成功地发送到我的数据库的主要文本字段到我的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']);
}
1条答案
按热度按时间2nbm6dog1#
我已经纠正了我的代码中的错别字指出的评论+另一个,我的一个朋友显示(使用错误的上传文件夹)。在那之后,经过一些测试,我的代码现在可以工作了,所以我将把更正后的代码留在那里: