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!") ;
}