上传图像文件时出现这种奇怪的错误

时间:2010-11-19 12:09:38

标签: php html forms

<?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.";
  }
?>

这是我用来将图像文件(jpg)上传到名为upload的文件夹的upload.php。我在其他地方有一个表格,当我选择文件并点击上传....它将我重定向到upload.php,我总是得到一个像“出事不错”的消息。我甚至尝试过png文件.. 你能帮忙吗?

2 个答案:

答案 0 :(得分:1)

您的代码与W3Schools(http://www.w3schools.com/php/php_file_upload.asp)几乎相同,所以我想回到该网站并再次获取代码。此外,如果您使用PNG罚款,它将永远不会通过您的初始验证,因为它没有在您的初始if..else语句中表示。

我在这里要做的是逐步完成代码和调试:

  • 表单是否在HTML页面上包含名称为“file”的正确文件上传元素?
  • 文件大小是否小于30kb?
  • 图片类型是gif还是jpg?
  • 图片是否进入$_FILES对象?尝试在print_r$_FILES进行确认
  • 您是否有权将图像存储在服务器的临时目录中?

跟踪问题,祝你好运。

答案 1 :(得分:0)

我的赌注是缺少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)