Как я могу использовать переменную $ _POST как часть пути к файлу на другой странице - PHP

0

Я новичок в PHP.

У меня возникают проблемы с страницей загрузки файлов, которую я создаю. В принципе, в форме загрузки файла у меня есть раскрывающийся список со списком категорий. Пользователь просматривает и выбирает файл, а затем выбирает категорию перед отправкой файла.

Предполагается, что файл загружается в папку на сервере динамически с помощью кода (user_data/username/fileType/filename), но то, что я на самом деле получаю, является (user_data/username//filename)

Я передаю выпадающую переменную списка как $ _POST, но по какой-то причине я не могу заставить ее заполнить путь к файлу. Я уверен, что это что-то простое, но я застрял. Вот мой код

fileupload.php

<html>
<?php
if (isset($_POST["file"])) {
            $selected = $_POST["fileType"];
        }

        //$selected = $_POST['fileType']
?>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br><br />
<label for="docType">File Type:</label>
<select name="File Type" id="fileType">
<option value="0" selected="selected">Select Upload File Type:</option>
<option value="Evac_Dgm"> Evacuation Diagram</option>
<option value="Evac_Man"> Evacuation Manual</option>
<option pvalue="Warden_List">Warden List</option>
<option value="Att_Record">Attendance Record</option>
</select>



<br /><br />

<input type="submit" name="submit" value="Submit">
</form>


</html>

==============

upload_file.php

<?php
echo $_POST['fileType'];

$allowedExts = array("gif", "jpeg", "jpg", "png", "pdf");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "application/pdf"))
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    $session = $_SESSION['username'];
    //$selected = $_POST['fileType'];
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("user_data/" . $session . "/" . $_POST['fileType'] . "/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "user_data/" . $session . "/" . $_POST['fileType'] . "/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "user_data/" . $session . "/" . $_POST['fileType'] . "/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

Любая помощь, которую вы могли бы дать, была бы потрясающей.

  • 2
    У вас не должно быть пробелов для именованных элементов формы <select name="File Type" id="fileType">
  • 0
    Фред, спасибо за вашу помощь. Я ценю вашу помощь. Это все сейчас работает.
Показать ещё 1 комментарий
Теги:
variables
post

1 ответ

0
Лучший ответ

Вам нужно удалить пробел из имени вашего поля <select>.

Изменить:

<select name="File Type" id="fileType">

Для того, чтобы:

<select name="FileType" id="fileType">

Кроме того, вот еще несколько комментариев для вашего HTML-кода:

<!-- Did you mean <label for="fileType"> ? -->
<label for="docType">File Type:</label>

<select name="File Type" id="fileType">
<option value="0" selected="selected">Select Upload File Type:</option>
<option value="Evac_Dgm"> Evacuation Diagram</option>
<option value="Evac_Man"> Evacuation Manual</option>

<!-- You have a typo below, should be <option value="... (there an extra 'p') -->
<option pvalue="Warden_List">Warden List</option>
<option value="Att_Record">Attendance Record</option>
</select>
  • 0
    Чувак большое спасибо за вашу помощь. Я знал, что это будет что-то простое! Просто нужен свежий взгляд на код!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню