使用带有PHP的foreach循环

时间:2013-01-26 13:59:25

标签: php

我正在尝试从HTML5多文件上传器循环遍历多个上传的文件。我正在使用foreach循环,但由于某种原因,它没有正确迭代我的文件。这个foreach循环应该做4件事之一。

1)如果文件大小超过500kb和jpeg,它会重新调整照片的大小并将其上传到ima​​ges目录并将记录添加到数据库中。

2)如果文件大于500kb和png,它会将照片转换为jpeg,重新调整大小并将其上传到ima​​ges目录并将记录添加到数据库中。 (注意:我的图像大小调整脚本只处理jpegs)。

3)如果文件大于5MB,请跳过照片并继续下一个循环。

3)如果文件小于500kb,它会将照片上传到ima​​ges目录并将记录添加到数据库中。

现在,我可以让图像重新调整大小没有问题,但是对于png或照片大于5MB的照片我有问题。出于某种原因,如果它们是数组中的第一个元素,则循环仅跳过大于5MB的照片,但如果它们位于中间或末尾则不会。我使用错误的方法来调用和测试我的Array元素吗?

我的PHP代码:

foreach ($_FILES['uploads']['name'] as $key => $file) {
    $time= time();

    // checking the photo's size
    if ($_FILES['uploads']['size'][$key] > 500000 && $_FILES['uploads']['size'][$key] < 5242880) { 
        // check to make sure the file is a jpeg
        if ($_FILES['uploads']['type'][$key] == "image/jpeg") {
            // resizing the photo                                     
            include('resize_albums.php');
         }
         else if ($_FILES['uploads']['type'][$key] == "image/png") {
            // making the image a jpeg if it isn't already
            $image = imagecreatefrompng($_FILES['uploads']['tmp_name'][$key]);
            imagejpeg($image, $_FILES['uploads']['tmp_name'][$key], 100);
            // resizing the file
            include('resize_albums.php');
         }
    }
    else if ($_FILES['uploads']['size'][$key] > 5242880) {
        continue;
    }
    else {
        // upload the photo and add the record to the database
    }
}

0 个答案:

没有答案