if(isset($_FILES)) 在 PHP 中不起作用

Posted

技术标签:

【中文标题】if(isset($_FILES)) 在 PHP 中不起作用【英文标题】:if(isset($_FILES)) Not working in PHP 【发布时间】:2018-10-04 11:27:33 【问题描述】:

我无法使用 $_FILES 从 html 表单获取输入类型文件值,使用 isset($_FILES['NAME']) 从表单获取上传的图像值,我放了一个 echo 'string'在 isset 条件的第一行,它没有显示它

 <form role="form" id="contact_form" class="contact-form" method="post" enctype="multipart/form-data">
                                    <div class="row">
                                        <div class="col-md-12">
                                            <ul class="row">
                                                <li class="col-sm-12">
                                                    <label>
                          <input type="text" class="form-control" name="newpseudo" id="name" placeholder="php">
                        </label>
                                                </li>
                                                <li class="col-sm-12">
                                                    <label>
                          <input type="email" class="form-control" name="newmail" id="email" placeholder="*EMAIL">
                        </label>
                                                </li>
                                                <li class="col-sm-12">
                                                    <label>
                          <input type="password" class="form-control" name="newmdp1" id="company" placeholder="*MOT DE PASSE">
                        </label>
                                                </li>
                                                <li class="col-sm-12">
                                                    <label>
                          <input type="password" class="form-control" name="newmdp2" id="company" placeholder="*CONFIRMER VOTRE MOT DE PASSE">
                        </label>
                                                </li>

                                                       <li class="col-sm-12">
                                                        <label>Ajouter Photo de profil</label>
                                                        <input type="file" name="avatar" >
                                                    </li>

                                            </ul>
                                        </div>
                                        <div class="col-md-12">
                                            <ul class="row">
                                                <li class="col-sm-12 no-margin">
                                                    <button type="submit" value="submit" class="btn" id="btn_submit" onClick="proceed();" name="modifier">Mettre a jour</button>
                                                </li>
                                            </ul>
                                        </div>
                                    </div>
                                </form>

我试图获取文件输入值的 PHP 代码:

  if (isset($_FILES['avatar']) AND !empty($_FILES['avatar']['name'])) 
         echo "string";
         $taillemax = 2097152;
         $extensionsvalides = array('jpg','jpeg','gif','png');
         if ($_FILES['avatar']['size'] <= $taillemax) 
             $extensionsUpload = strtolower(substr(strrchr($_FILES['avatar']['name'],'.'),1));
             if (in_array($extensionsUpload, $extensionsvalides)) 
                     $chemin ="membres/avatars/".$_SESSION['id'].".".$extensionsUpload;
                     $resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);
                     if ($resultat) 
                         $updateavatar = $bdd->prepare('UPDATE memebre SET avatar = :avatar WHERE id = :id');
                         $updateavatar->execute(array('avatar'=>$_SESSION['id'].".".$extensionsUpload,'id' => $_SESSION['id']));
                               header("Location: userProfile.php?id=".$_SESSION['id']);

                     
                     else
                     
                        $msg = "Erreur de l'importation de votre photo de profil";
                     
             
             else
             
                $msg = "votre photo de profil  doit etre de format jpg , jpeg ou png";
             
         

【问题讨论】:

你的名声很差,过去有人帮助过你,甚至没有标记为答案 PHP 代码是否与表单在同一页面(在同一文件中)?如果没有,您在 html 表单上缺少 action 属性。 @Brainfeeder php 代码在同一页面中,它是一个 .php 页面 @D.'s 我会尽快回复他们 js函数proceed();是做什么的?您是否在通过 ajax 或其他方式发布之前从字段中收集数据?那么问题可能在于您没有在此处发布的js代码...... 【参考方案1】:

为表单添加动作并将数据发送到文件执行phpcode并保存文件 这意味着你应该改变这一行:

 <form role="form" id="contact_form" class="contact-form" method="post" 
 enctype="multipart/form-data">

到:

 <form role="form" id="contact_form" class="contact-form" method="post" 
 enctype="multipart/form-data" action="example.php">

【讨论】:

以上是关于if(isset($_FILES)) 在 PHP 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

php如何实现一次性上传多个文件

php如何将图片转成字节流

php - 上传图片之痛(建文件夹)

使用 PHP 在电子邮件中发送多个附件

检查PHP中是否超出了最大上传文件数

php上传文件(上传后显示图片)