Такая странная ошибка при загрузке файла изображения - PullRequest
0 голосов
/ 19 ноября 2010
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 30000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Looks Great!";

    if (file_exists("localhost/upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "localhost/upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "localhost/upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Something went wrong.";
  }
?>

Это upload.php, который я использую для загрузки файла изображения (jpg) в папку с именем upload. У меня есть форма в другом месте, и когда я выбираю файл и нажимаю «загрузить» ... он перенаправляет меня на upload.php, и я всегда получаю сообщение «Что-то пошло не так» Я даже пробовал png файл .. Вы можете помочь?

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

Ваш код почти такой же, как и в W3Schools (http://www.w3schools.com/php/php_file_upload.asp), поэтому я бы сказал, вернитесь на этот сайт и снова получите код. Кроме того, если вы использовали штраф PNG, он никогда не пройдет первоначальную проверку, поскольку не представлен в вашем первоначальном утверждении if..else.

То, что я хотел бы сделать здесь, это пройти через код и отладить:

  • Содержит ли форма правильный элемент загрузки файла с именем «file» на странице HTML?
  • Размер файла меньше 30 КБ?
  • Является ли тип изображения GIF или JPG?
  • Изображение попадает в объект $_FILES? Попробуйте сделать print_r на $_FILES, чтобы быть уверенным
  • У вас есть разрешение на сохранение изображения во временном каталоге сервера?

Удачи в отслеживании проблемы.

0 голосов
/ 19 ноября 2010

Моя ставка делается на форму, в которой отсутствует атрибут enctype = "multipart / form-data".

Небольшой совет по стилю, вы можете заменить

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 30000))

на

if(in_array($_FILES["file"]["type"], 
            array("image/gif", 
                  "image/jpg", 
                  "image/pjpeg")) && 
   $_FILES["file"]["size"] < 30000)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...