Загрузка PHP для ошибок

0

У меня есть форма загрузки, где я хочу разрешить пользователям загружать изображения и видео, но когда я отправляю форму, она бросает сообщение об ошибке, которое я установил в оператор else. Что я сделал не так?

<?php

 $allowedExts = array("gif", "jpeg", "jpg", "png");
  $temp = explode(".", $_FILES["upload"]["name"]);
  $extension = end($temp);
  if ((($_FILES["file"]["type"] == "image/gif")
  || ($_FILES["file"]["type"] == "video/avi")
  || ($_FILES["file"]["type"] == "video/mp4")
  || ($_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"]["size"] < 100000)
  && in_array($extension, $allowedExts))
    {
    if ($_FILES["upload"]["error"] > 0)
      {
      echo "Return Code: " . $_FILES["upload"]["error"] . "<br>";
      }
    else 
      {

        $fileName = $temp[0].".".$temp[1];
        $temp[0] = rand(0, 3000); //Set to random number
        $fileName;

      if (file_exists("content/" . $_FILES["file"]["name"]))
        {
        echo $_FILES["upload"]["name"] . " already exists. ";
        }
      else
        {
        $newfilename = rand(1,99999).end(explode(".",$_FILES["upload"]["name"]));
        move_uploaded_file($_FILES["upload"]["tmp_name"], "content/" . $newfilename);
        echo "Stored in: " . "content/" . $_FILES["file"]["name"];
        }
      }
    }
  else
    {
    echo "Invalid file or connection failure.";
    }

 ?>

"Неверный файл или сбой подключения". это сообщение об ошибке, которое я получаю.

  • 0
    Какую отладку ты уже делал?
  • 0
    Ваша проблема с первым оператором if . Можете ли вы опубликовать свой код <form> ?
Показать ещё 4 комментария
Теги:
file-upload

2 ответа

1

Это то, что я использую, однако я не вставляю временные ряды

<?php


$fileName = $files['upload']['name'];
$fileArray = explode('.', $fileName);
$extension = count($fileArray) - 1;
$extension = $fileArray[$extension];

// Put allowed file extensions in the following array   

$allowedExt = array("gif",
                    "avi",
                    "mp4",
                    "jpeg",
                    "jpg",
                    "pjpeg",
                    "x-png",
                    "png");

if(!in_array($extension, $allowedExt)){
// print error message here
exit;
}

$fileType = $_FILES['upload']['type'];
# Put allowed file mime types here as an extra check 
$allowedTypes = array("image/gif",
                      "video/avi",
                      "video/mp4",
                      "image/jpeg",
                      "image/jpg",
                      "image/pjpeg",
                      "image/x-png",
                      "image/png"); 

if(!in_array($fileType, $allowedTypes)){
// print error message here
exit;
}

// Add the rest of your code here as required

?>
0

Учитывая имя файла: i1_small.jpg для загрузки (это файл, который я использовал с моего компьютера)

Следующий код переименует его в: 74447_i1_small.jpg (используя случайное число из функции rand() которая уже была в вашем коде)

У вас были несоответствующие имена параметров.

Например:

$_FILES["upload"]["name"])
а также
$_FILES["file"]["name"])

Они должны совпадать.

HTML-форму, которую я использовал: (убедитесь, что вход соответствует name="file" как показано ниже)

<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file" /> 
<input type="submit" name="submit" value="Submit" />
</form>

Попробуйте это сейчас:

<?php

 $allowedExts = array("gif", "jpeg", "jpg", "png");
  $temp = explode(".", $_FILES["file"]["name"]);
  $extension = end($temp);
  if ((($_FILES["file"]["type"] == "image/gif")
  || ($_FILES["file"]["type"] == "video/avi")
  || ($_FILES["file"]["type"] == "video/mp4")
  || ($_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"]["size"] < 100000)
  && in_array($extension, $allowedExts))
    {
    if ($_FILES["file"]["error"] > 0)
      {
      echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
      }
    else 
      {

        // $fileName = $temp[0].".".$temp[1];


$fileName = $temp[0].".".$temp[1];


        $temp[0] = rand(0, 3000); //Set to random number
        $fileName;

      if (file_exists("content/" . $_FILES["file"]["name"]))
        {
        echo $_FILES["file"]["name"] . " already exists. ";
        }
      else
        {
        $newfilename = rand(1,99999) . "_" . ($_FILES["file"]["name"]);

        move_uploaded_file($_FILES["file"]["tmp_name"], "content/" . $newfilename);
        echo "Stored in: " . "content/" . $_FILES["file"]["name"];
        }
      }
    }
  else
    {
    echo "Invalid file or connection failure.";
    }

 ?>

Ещё вопросы

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