Как мне получить имя файла из формы в php? $_FILES[«filename»] [«name»], похоже, не работает

#php #html

#php #HTML

Вопрос:

У меня есть форма ниже, которую я пытаюсь использовать для извлечения некоторых деталей в базу данных MySQL. Однако при попытке получить файл в форме все всегда отображается как null. Я не совсем уверен, почему это происходит, поэтому буду признателен за любую помощь!

 <form method="post" action="myfile.php" enctype="multipart/form-data">
  <table class="form-table">
    <tr>
      <td><b>Document (Optional)</b></td>
      <td>
        <select name="d" class="form-control input input-sm">
          <option value="companyDoc">Company Registration Form</option>
          <option value="businessCard">Business Card</option>               
        </select>
      </td>
    </tr>
    <tr>
      <td><b>Upload Document (Optional)</b></td>
      <td><input type="file" class="form-control input input-sm" id="ud" name="ud"></td>
    </tr>
    <tr>
      <td></td>
      <td><input type="submit" value="Submit" name="submit" class="btn btn-primary pull-right"></td>
    </tr>
  </table>
</form>  

Теперь мой фрагмент php ниже, где я пытаюсь вызвать результаты формы в том же файле, что и html.

 if(isset($_POST['submit'])) 
{
  $target_dir = "../../public_html/clientarea/docs/";
  $fileName = basename($_FILES["ud"]["name"]);
  $target_file = $target_dir . $fileName;
  if($fileName!="") {
    $uploadOk = 1;
    $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    $errorMsg = "";
    if (file_exists($target_file)) {
      $errorMsg = "Some file already exists. ";
      $uploadOk = 0;
    } else {
      if (move_uploaded_file($_FILES["ud"]["tmp_name"], $target_file)) {
          $errorMsg = "The file ". basename( $_FILES["ud"]["name"]). " has been uploaded. ";
      } else {
          $errorMsg = "There was an error uploading your some of the file.";
      }
    }
  }    
}  

Комментарии:

1. Что именно выдает значение null? Вы проверили $_FILES['ud']['error'] ?

Ответ №1:

Протестировал ваш HTML и PHP код. С $_FILES['ud']['name'] для получения имени файла сработало просто отлично.

Вы можете попытаться print_r($_FILES) или, возможно print_r($_FILES['ud']) , узнать значения вашей формы, которые вы отправили с помощью метода POST.