Php 借助数组和获取错误上载图像
我使用一个脚本上传了一个目录的代码工程伟大的情况下,只有一张图片将被上传几个图像 如果我想上传两个或更多的图像,并且有一个不被接受的扩展名,脚本将上传一个具有允许上传的扩展名的图像,并显示一个不被接受的图像的错误消息,但是上传发生了。这是我的第一个问题 第二个问题:在出现错误消息的情况下,我想显示一条消息,其中说的是,哪些图像是不允许的。我不知道如何将这个结尾不可接受的变量提取到一个变量中,我可以对错误消息进行响应 以下是我使用的代码:Php 借助数组和获取错误上载图像,php,mysql,image,file,upload,Php,Mysql,Image,File,Upload,我使用一个脚本上传了一个目录的代码工程伟大的情况下,只有一张图片将被上传几个图像 如果我想上传两个或更多的图像,并且有一个不被接受的扩展名,脚本将上传一个具有允许上传的扩展名的图像,并显示一个不被接受的图像的错误消息,但是上传发生了。这是我的第一个问题 第二个问题:在出现错误消息的情况下,我想显示一条消息,其中说的是,哪些图像是不允许的。我不知道如何将这个结尾不可接受的变量提取到一个变量中,我可以对错误消息进行响应 以下是我使用的代码: 希望能清楚地知道我喜欢做什么。如果有人能帮上忙,我真的
希望能清楚地知道我喜欢做什么。如果有人能帮上忙,我真的很感激。非常感谢。这对你很有用 示例HTML
<form action="" enctype="multipart/form-data" method="post">
<p>
Please specify a file, or a set of files:<br> <input type="file"
name="image[]" size="40">
</p>
<p>
Please specify a file, or a set of files:<br> <input type="file"
name="image[]" size="40">
</p>
<p>
Please specify a file, or a set of files:<br> <input type="file"
name="image[]" size="40">
</p>
<p>
Please specify a file, or a set of files:<br> <input type="file"
name="image[]" size="40">
</p>
<p>
Please specify a file, or a set of files:<br> <input type="file"
name="image[]" size="40">
</p>
<div>
<input type="submit" value="Send">
</div>
</form>
样本输出
string '79534296' (length=8)
string '89773706' (length=8)
array
'download (1)' =>
array
0 => string 'File format not accepted for download (1)' (length=42)
'brief.docx' =>
array
0 => string 'File format docx not accepted for brief.docx' (length=44)
'' =>
array
0 => string 'File format not accepted for ' (length=30)
array
'79534296-2.jpg' => string 'OK' (length=2)
'89773706-2.jpg' => string 'OK' (length=2)
编辑1
如果所有文件都必须有效,有两种方法可以实现这一点
A.首先验证所有文件
foreach ( $_FILES ['image'] ['name'] as $key => $array_value ) {
if(! in_array (pathinfo ($_FILES ['image'] ['name'] [$key], PATHINFO_EXTENSION ), $allowedExtention ))
{
die("Die! Die! Die") ;
}
}
foreach ( $_FILES ['image'] ['name'] as $key => $array_value ) {
// Upload Script here
}
B.如果检测到错误,请删除所有文件
foreach ( $_FILES ['image'] ['name'] as $key => $array_value ) {
// Upload Script here
}
// Remove All Files
if(count($errors) > 0)
{
foreach ($output as $key => $value)
{
@unlink($path . "/" . $key);
}
die("Die! die! die!") ;
}
我希望这有助于记住,与文本框不同的是,您不能将同一表单中的文件(如文本框中的文本)呈现给用户。因此,在您可以进一步决定之前,将成功的上传保存在会话中可能不是一个坏主意。。。对不起,好的,非常感谢你的编码。我想评论两件小事。首先,问题仍然存在,当上传一个有可接受结尾的文件和一个没有可接受结尾的文件时,上传将被执行。第二个问题是,我现在有一个数组,我不想显示它。我只想回显包含“File format docx not accepted for brief.docx”的数组[0],而不是整个数组。我怎么能意识到这一点?非常感谢。我只是在测试。。。它只接受结尾有效的文件。。。可以使用查看我的
输出。。我上传了5个文件
。。只有2
具有==OK
。。还尝试上载空文件。。。你能看到错误输出中显示的所有内容吗?是的,没错,但我的意思是,当一个文件不被接受时,将被接受的文件的上传不应该被执行,因为一旦用户发布表单,他就不被允许添加或更改图像。这就是为什么我需要拒绝上传的情况下,一个文件将不被接受。哦。。现在我明白你想要什么了……”当一个文件失败时,不允许任何其他文件`我会用解决方案更新我的代码:)作为德国人,我很抱歉,有时很难找到合适的词语来表达我自己。
foreach ( $_FILES ['image'] ['name'] as $key => $array_value ) {
if(! in_array (pathinfo ($_FILES ['image'] ['name'] [$key], PATHINFO_EXTENSION ), $allowedExtention ))
{
die("Die! Die! Die") ;
}
}
foreach ( $_FILES ['image'] ['name'] as $key => $array_value ) {
// Upload Script here
}
foreach ( $_FILES ['image'] ['name'] as $key => $array_value ) {
// Upload Script here
}
// Remove All Files
if(count($errors) > 0)
{
foreach ($output as $key => $value)
{
@unlink($path . "/" . $key);
}
die("Die! die! die!") ;
}