Я новичок в PHP.
У меня возникают проблемы с страницей загрузки файлов, которую я создаю. В принципе, в форме загрузки файла у меня есть раскрывающийся список со списком категорий. Пользователь просматривает и выбирает файл, а затем выбирает категорию перед отправкой файла.
Предполагается, что файл загружается в папку на сервере динамически с помощью кода (user_data/username/fileType/filename), но то, что я на самом деле получаю, является (user_data/username//filename)
Я передаю выпадающую переменную списка как $ _POST, но по какой-то причине я не могу заставить ее заполнить путь к файлу. Я уверен, что это что-то простое, но я застрял. Вот мой код
<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>
==============
<?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";
}
?>
Любая помощь, которую вы могли бы дать, была бы потрясающей.
Вам нужно удалить пробел из имени вашего поля <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>
<select name="File Type" id="fileType">