Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用于检查图像格式的in_数组出错_Php - Fatal编程技术网

Php 用于检查图像格式的in_数组出错

Php 用于检查图像格式的in_数组出错,php,Php,我已经看到了其他问题的答案,所以我分离了explode函数,但仍然给出了下面的错误。我已经粘贴了文件上传的全部代码 警告:explode()要求参数2为字符串,数组在第22行的C:\xampp\htdocs\hiddenprocess.php中给出 警告:end()要求参数1为数组,在第25行的C:\xampp\htdocs\hiddenprocess.php中给出空值 代码如下: <?php if (empty($_FILES['Upload_Property_I

我已经看到了其他问题的答案,所以我分离了explode函数,但仍然给出了下面的错误。我已经粘贴了文件上传的全部代码

警告:explode()要求参数2为字符串,数组在第22行的C:\xampp\htdocs\hiddenprocess.php中给出

警告:end()要求参数1为数组,在第25行的C:\xampp\htdocs\hiddenprocess.php中给出空值

代码如下:

    <?php




    if (empty($_FILES['Upload_Property_Images']['name']))
    {
        echo 'You have\'nt Entered Value for upload field'; 
    }

    else

    {


foreach($_FILES as $file) 

{

 // Allowed file types
 $whitelist = array("jpg","png");
 $temp = explode('.', $file['name']);
  // Match uploaded file extension

  if (in_array(end($temp), $whitelist )) 

  {
       // Count total uploads
       if (count($_FILES['Upload_Property_Images']['name'])==6) 
       {
         // Code for uploading here
          echo 'files uploaded successfully';
       } 

       else 
       {
       // Count error 
         echo 'You\'r Only Allowed Six Images';
       }

  } 



  else 
  {
       // File extension error
       echo 'Your Only Allowed JPG and PNG';
  }


 }

}

?>

这是您的代码的工作版本。我总共做了四次更改,在注释中用
**

if (empty($_FILES['Upload_Property_Images']['name']))
{
    echo 'You have\'nt Entered Value for upload field';
    exit(); 
}
else
{
    foreach($_FILES['Upload_Property_Images']['name'] as $file) // **CHANGED
    {
        if ($file) // **ADDED
        { 
            // Allowed file types
            $whitelist = array("jpg","png");
            $temp = explode('.', $file); // **CHANGED

            // Match uploaded file extension
            if (in_array(end($temp), $whitelist )) 
            {
                // Count total uploads
                if (count($_FILES) <= 6) // **CHANGED
                {
                    // Code for uploading here
                    echo 'files uploaded successfully';
                } 
                else 
                {
                    // Count error 
                    echo 'Your Only Allowed Six Images';
                }
            } 
            else 
            {
               // File extension error
               echo 'Your Only Allowed JPG and PNG';
            }
        }
    }
}
if(空($\u文件['Upload\u属性\u图像]['name']))
{
echo“您尚未为上传字段输入值”;
退出();
}
其他的
{
foreach($\u文件['Upload\u属性\u图像]['name']作为$file)//**已更改
{
如果($file)/**已添加
{ 
//允许的文件类型
$whitelist=数组(“jpg”、“png”);
$temp=explode('.',$file);//**已更改
//匹配上载的文件扩展名
if(在数组中(结束($temp),$whitelist))
{
//计算总上传量
如果(计数($\u文件)我认为应该是:

foreach($_FILES['Upload_Property_Images']['name'] as $file) {
    ...
    $temp = explode('.', $file);   // not $file['name']
    ...
}

验证图像的函数示例:

function validate()
{
    $errors = array();
    foreach($_FILES['Upload_Property_Images']['name'] as $file) // **CHANGED
    {
        if ($file) // **ADDED
        { 
            // Allowed file types
            $whitelist = array("jpg","png");
            $temp = explode('.', $file); // **CHANGED

            // Match uploaded file extension
            if (in_array(end($temp), $whitelist )) 
            {
                // Count total uploads
                if (count($_FILES) > 6) // **CHANGED
                {
                    // Count error 
                    $errors[] = 'Your Only Allowed Six Images';
                }
            } 
            else 
            {
               // File extension error
               $errors[] = 'Your Only Allowed JPG and PNG';
            }
        }
    }
    if (empty($errors))
    {
        return TRUE;
    }
    else
    {
        return array_unique($errors);
    }
}

$validation = validate();
if ($validation === TRUE)
{
    // uplaod images here
}
else
{
    print_r($validation);
}

表单的输入是否命名为
type=“file”name=“Upload\u Property\u Images”
,是否包含
enctype=“multipart/form data”
?或
name=“Upload\u Property\u Images[]”或
-如果其中任何一个丢失或错误,代码将失败。它包含“enctype=“multipart/form data”,并且名称与此类似=“Upload_Property_Images[]”这是我的文件代码“”,另外,你有
method=“post”
?检查
$file['Upload_Property_Images']['name']
的值。你想将文件上载到文件夹,对吗?如果是这样,你将丢失文件和文件夹位置。@user3610629I已更改,但现在出现此错误“警告:explode()预期参数2为字符串,数组在第21行的C:\xampp\htdocs\hiddenprocess.php中给出警告:end()预期参数1为数组,null在第24行的C:\xampp\htdocs\hiddenprocess.php中给出您唯一允许的JPG和PNG“等一下……让我想想。我知道答案与此有关,不过……@user3610629 Hmmm我不知道,请尝试在
foreach
的最开始添加
print\r($file['name'))
,并告诉我使用相同输入名称上载多个文件时会得到什么(
Upload\u Property\u Images[]
),生成的数组看起来像。每个
名称
类型
,etc条目都是一个array@user3610629不要内爆它,你需要循环检查每个文件名并检查它们是否有正确的扩展名。它可以工作,但如果我上传两个GIF图像和四个JPG,我会得到这样的信息“你只允许JPG和PNG,你只允许JPG和PNG”文件上传成功文件上传成功文件上传成功文件上传成功@user3610629请查看我的更新答案。它解决了我们一直遇到的所有问题,包括您刚才遇到的问题mentioned@user3610629我看不出你是什么样的人expecting@lulco:如果从六张图片中选择其中一张s GIF,因此它不能上载所有图像,只能上载一次错误信息。@user3610629好的,因此我认为您应该编写一些“验证”函数,检查所有文件,如果没有发现错误,则开始上载imageshow,以从输出中删除这些“数组([0]=>”。我使用echo,但将“数组”用于每个文件($validation as$error){echo$error.
;}而不是print_r($validation);问题没有解决,因为它显示了成功消息和错误消息。请不要将成功消息添加到$error数组。我已将其从代码中删除