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