1

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

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

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

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

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

现在,我可以毫无问题地重新调整图像大小以正常工作,但是对于 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
    }
}
4

0 回答 0