如果数组索引的第一个为空,则图像不上传

时间:2018-07-18 08:57:16

标签: php file-upload foreach

我正在尝试使用php上传多张照片。一切正常。但是问题是如果任何字段为空,则包含未上传图像的数组。
这是我的代码:

$count = 0;

foreach ($_FILES['myfile']['name'] as $key=>$filename){


$filename = $_FILES['myfile']['name'][$count];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
// echo $ext;
// exit();
if($ext == "jpeg" || $ext == "jpg" || $ext == "png" || $ext == "gif"){

        $filename = uploadfilename($filename);  
        $filename1=$iiid."blog".$filename;
        $target_path = "../photo/";

        $target_path = $target_path . repc($filename1);

        move_uploaded_file($_FILES['myfile']['tmp_name'][$count], $target_path);    
        $dbfield = $count+1;           
        $sql="update product set img_".$dbfield." ='".rep($filename1)."' where id='".$iiid."'";
        $result=mysql_query($sql);
        $count++;
        // header ("Content-type: image/jpeg");
        // print_r(get_resource_type($uploadedImage));exit();
        // $resizedImage = PIPHP_ImageResize($target_path,400,400);
        $w = 400;
        $h = 400;
        list($width, $height) = getimagesize($target_path);
        $info = getimagesize($target_path);
        $mime = $info['mime'];
        switch ($mime) {
            case 'image/jpeg':
                $source = ImageCreateFromJPEG($target_path);
                $resized_img = ImageCreateTrueColor($w, $h);        
                ImageCopyResampled($resized_img, $source, 0, 0, 0, 0, $w, $h, $width, $height);
                ImageJPEG($resized_img,$target_path);
                ImageDestroy($resized_img);
                break;
            case 'image/png':
                $source = ImageCreateFromPNG($target_path);
                $resized_img = ImageCreateTrueColor($w, $h);
                ImageCopyResampled($resized_img, $source, 0, 0, 0, 0, $w, $h, $width, $height);
                ImagePNG($resized_img,$target_path);
                ImageDestroy($resized_img);
                break;
            case 'image/gif':
                $source = ImageCreateFromGIF($target_path);
                $resized_img = ImageCreateTrueColor($w, $h);        
                ImageCopyResampled($resized_img, $source, 0, 0, 0, 0, $w, $h, $width, $height);
                ImageGIF($resized_img,$target_path);
                ImageDestroy($resized_img);
                break;        
            default : echo "unknown file";
                exit();
            }
    }
}

我正在使用输入类型文件发送图像。如果第一个索引元素为空而其他索引不为$ _FILES数组,则循环不起作用。请帮助

3 个答案:

答案 0 :(得分:0)

您可以尝试的最简单的方法是,用try / catch包围循环的每个迭代,这不需要您确切地发现代码中的问题所在。

这样,如果任何迭代由于抛出异常而失败,则不会阻止其余代码执行。

但是,您需要注意,在进行任何标记迭代之前都不会引发异常。在这里,您在迭代过程中遇到$count++;杂记,如果在该行之前发生任何故障,您的代码将被卡住。 (无论如何,不​​要混用执行不同功能的代码是一种很好的风格;您应该在开始或结束时放置该行;在开始时使用try / catch策略)

答案 1 :(得分:0)

当我从代码中删除(如果$ ext ==)条件时,它可以正常工作。

答案 2 :(得分:0)

由于第一个索引的值为空,因此代码不会进入if循环内,并且'$ count'的值不会递增。 因此,$ count的值始终为“ 0”。

尝试在if循环结束后放置“ $ count ++”。