提交表单时出错。 我尝试在输入image1中上传图像 我指定了multipart / form-data,并指定了输入的名称值:image1 我也试过post方法和get方法,但$ _FILES仍然是空的 错误是:注意:未定义的索引:image1
这是HTML代码
<form enctype="multipart/form-data" class="formulaire" method="get" action="../controllers/import_controller.php">
<table class="table">
<tr bgcolor="#f39c12">
<th align="center" width="33%">CATEGORIE</th>
<th align="center" width="33%">SOUS CATEGORIE</th>
</tr>
<tr>
<td><select type="text" name="categorie" placeholder="Categorie" onchange="liste_sous_categorie(this.value)" required/><?php liste_categorie(); ?></select></td>
<td><div id="liste_sous_categorie"><select required/></select></div></td>
</tr>
</table>
<table id="image_add" class="table">
<tr>
<td><span>LIBELLE</span></td>
<td><input type="text" name="libelle" required/></td>
</tr>
<tr>
<td><span>DESCRIPTION</span></td>
<td><textarea name="description" required></textarea></td>
</tr>
<tr>
<td><span>PRIX</span></td>
<td><input min="1" type="number" name="prix" required/></td>
</tr>
<tr>
<td><span>STOCK</span></td>
<td><input min="1" type="number" name="stock" required/></td>
</tr>
<tr>
<td><span>IMAGE 1</span></td>
<td><input type="file" name="image1" accept="image/*" required/></td>
</tr>
</table>
<input type="hidden" value="1" name="nbre_image_article" id="nbre_image_article">
<input type="hidden" value="1" name="article_add">
<center><input align="center" type="submit" value="VALIDER" class="btn btn-primary" style="margin-right: 5px;"></input><i class="fa fa-task"></i></center>
<br>
</form>
和PHP代码
if(isset($_GET['article_add']))
{
$libelle=addslashes(htmlentities($_GET['libelle']));
$description=addslashes(htmlentities($_GET['description']));
$prix=$_GET['prix'];
$stock=$_GET['stock'];
$sous_categorie_id_sous_categorie=$_GET['sous_categorie'];
$nbre_image_article=$_GET['nbre_image_article'];
session_start();
$uploaddir = '../../views/images/articles/';
$uploadfile = $uploaddir . basename($_FILES['image1']['name']);
echo $_FILES['image1']['error'];
echo '<pre>';
if (move_uploaded_file($_FILES['image1']['tmp_name'], $uploadfile)) {
echo "Le fichier est valide, et a été téléchargé
avec succès. Voici plus d'informations :\n";
} else {
echo "Attaque potentielle par téléchargement de fichiers.
Voici plus d'informations :\n";
}
}
答案 0 :(得分:2)
上传文件需要使用POST方法,而不是GET。
因此,您需要将表单的方法更改为method="post"
。
您还需要将$_GET
的所有实例更改为$_POST
。
如果不这样做,您将面临更多未定义的索引通知。
参考:
您还需要确保您尝试上传到的文件夹具有为其设置的适当权限。
参考:
或者,通过FTP修改文件夹的权限。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
<强> Foonotes:强>
我注意到您正在使用session_start();
。
如果在标题之前包含任何输出,请确保您没有在标题之前输出。
最好将它放在(完整)代码的顶部。
如果您看到标题已发送通知,您可以在Stack上查询以下内容:
如果您没有使用任何$_SESSION
数组(在您发布的代码中没有数组),那么您可以安全地从代码中删除session_start();
。