【问题标题】:Something wrong with my code? Multiple Upload PHP file我的代码有问题吗?多个上传PHP文件
【发布时间】:2010-10-06 22:26:33
【问题描述】:

这是我制作的代码,我希望它可以工作,但一定有错误。我自己搞不清楚,请帮忙。

<?php

if(isset($_POST['submit'])){

    $max_size = 500000;
    $image_upload_path = "images/products/";
    $allowed_image_extension = array('jpg','jpeg','png','gif');


    for($i=0;$i<2;$i++)
    {
         //check if there is file 
        if((!empty($_FILES['image[]'][$i])) && ($_FILES['image[]']['error'][$i]==0))
        {
            //check extension
            $extension = strrchr($_FILES['image']['name'][$i], '.');
            if(in_array($extension,$allowed_image_extension))
            {
                //check file size.
                if($_FILES['image']['size'][$i] > $max_size)
                {
                    echo "file too big";
                }
                else if($_FILES['image']['size'][$i] < 1)
                {
                    echo "file empty";
                }
                else
                {
                    //we have pass file empty check,file extension check,file size check.
                    $the_uploaded_image = $_FILES['image']['tmp_name'][$i];
                    $the_uploaded_image_name = $_FILES['image']['name'][$i];

                    //replace empty space in filename with an underscore '_'
                    $the_uploaded_image_name = preg_replace('/\s/','_',$the_uploaded_image_name);

                    //get the file extension
                    $the_uploaded_image_extension = explode(',',$the_uploaded_image_name);
                    $the_new_image_name = $the_uploaded_image_name."".md5(uniqid(rand(),true))."".$the_uploaded_image_extension;

                    $save_image_as = $the_new_image_name;
                    //check file exist
                    if(file_exists($image_upload_path."".$the_new_image_name))
                    {
                        echo "file".$image_upload_path."".$the_new_image_name." already exist";
                    }
                    else
                    {
                        if(move_uploaded_file($the_uploaded_image,$save_image_as))
                        {
                            echo "image".$the_uploaded_image_name." uploaded sucessfully";
                            //set the image  path to save in database column
                        }
                        else
                        {
                            echo "there was an error uploading your image.";
                        }
                    }
                }
            }
            else
            {
            echo "extension not allowed";
            }
        }
        else
        {
            echo "please choose file to upload";
        }
    }


}

?>

<html>
<head><title>image upload</title></head>
<body>
<form action="" method="POST" enctype="multipart/form-data">
    <input type="file" name="image[]"/>
    <input type="file" name="image[]"/>
    <input type="submit" value="submit"/>
</form>
</body>
</html>

这是我的新 PHP 代码。我得到的结果都是找到的,没有找到,没有找到。有人会告诉我我在这里做错了什么。 if else 条件似乎不起作用,因为这两个条件都给出了输出。为什么?

<?php
if(isset($_POST["submit"])) {
    echo $_POST["submit"];
    echo "<br/>";
    for($i=0;$i<count($_FILES['image'])-1;$i++)
    {
        if(!empty($_FILES['image']['tmp_name'][$i]))
        {
            echo "found";    
            echo "<br/>";
        }
        else
        {
            echo "not found";
            echo "<br/>";
        }
    }

}
else
{
    echo "form is not posted";
}

?>

【问题讨论】:

  • 请您给我们任何指示正在发生/未发生的事情吗?
  • @deceze 说了什么。请在您的问题中添加一个问题,并描述什么不起作用。

标签: php file upload


【解决方案1】:

我猜明显的 WTF 应该是 $_FILES['image[]'][$i],它应该只是 $_FILES['image'][$i](名称中的 [] 使它成为一个数组,它不是名称的一部分)。

如果没有更多信息,我不愿意为您解决除此之外的任何问题。在代码中的不同点试试这个:

echo '<pre>';
var_dump($_POST); // or other variables
echo '</pre>';

这应该可以帮助您调试自己的代码,这是您必须学会做的事情。

【讨论】:

  • 我还是黑屏,没有任何错误,输入文件中的图像都没有上传。
  • @Roger 然后打开错误报告,并让脚本转储$_FILES
  • 另外@Roger,这确实是基本调试的一个案例,这里没有人可以(或不会)为你做。首先,您打开错误报告。然后检查是否设置了 $_POST["submit"] - 例如通过测试输出echo "submit is set!";。然后您测试第 13 行中的条件是否真的得到满足,例如通过制作另一个测试输出。等等等等。这里的每个知识渊博的人都必须经历这个 - 这是我们所有人学习的方式
  • 感谢各位指出调试代码的方法。我这周刚开始自己​​学习 PHP。
猜你喜欢
  • 1970-01-01
  • 2013-05-04
  • 2013-03-26
  • 2015-09-07
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
相关资源
最近更新 更多