2010-11-19 115 views
-1
<?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文件.. 你能帮忙吗?上传图片文件时出现如此奇怪的错误

+0

这样一个奇怪的问题,你应该打破'4或conditions',并对其进行测试条件逐条件? – ajreal 2010-11-19 12:20:26

+0

对于PNG,您还需要添加“image/png”检查。 – 2010-11-19 12:28:47

+0

也许'var_dump($ _ FILES);'可以提供帮助。 – 2010-11-19 12:43:53

回答

1

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

我会在这里做的是通过代码和调试步骤:

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

祝你好运,追查问题。

+0

非常感谢。很好的答案。 – Jack 2010-11-19 12:33:13

+0

我需要另一种帮助...说我成功上传文件,我如何检索文件返回使用PHP? – Jack 2010-11-19 12:35:43

+0

你可以提供一个链接或一些smaple代码?谢谢 – Jack 2010-11-19 12:40:27

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) 
相关问题