Так что я пытаюсь добавить функцию загрузки на страницу контакта, которая будет разрешать только определенные типы файлов. Файлы должны храниться в корневом каталоге в папке «загрузить». Однако файлы не загружаются, и я получаю ошибку «неправильный файл» (как запрограммирован) в файле PDF и docx, но не могу понять, почему. Может ли кто-нибудь дать представление?PHP Загрузить для определенного типа файла, «недопустимый тип файла»?
<?php
if($_POST) {
if($_POST["token"]==true){
$allowedExts = array("pdf","docx", "doc");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "application/pdf")
|| ($_FILES["file"]["type"] == "application/docx")
|| ($_FILES["file"]["type"] == "application/doc"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"]/6144) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . rand().$extension);
echo "Stored in: " . "upload/" . "rand().$extension)";
}
}
}
else
{
echo "Invalid file";
}
?>
Должно ли 'docx' находиться в вашей разрешенной массиве расширений? В настоящее время его нет. Вы пытались отладить это, чтобы определить, где вы получаете значения, которых вы не ожидаете? –
И 'echo $ _FILES [" file "] [" type "]', чтобы убедиться, что это так, как вы думаете. – AbraCadaver
Как сейчас, эти фигурные скобки не совпадают. Это, очевидно, не источник ошибки, но меня это беспокоит, как он вообще компилируется? – enrey