未定义的索引:$ _FILES中的image1

时间:2016-02-05 18:32:15

标签: php image file

提交表单时出错。 我尝试在输入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";
}

}

1 个答案:

答案 0 :(得分:2)

上传文件需要使用POST方法,而不是GET。

因此,您需要将表单的方法更改为method="post"

您还需要将$_GET的所有实例更改为$_POST

  • 快速查找&amp;在你最喜欢的编辑器中替换,将在瞬间改变它们。

如果不这样做,您将面临更多未定义的索引通知。

参考:

您还需要确保您尝试上传到的文件夹具有为其设置的适当权限。

参考:

或者,通过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();