我正在尝试从 HTML5 多文件上传器循环浏览多个上传的文件。我正在使用 foreach 循环,但由于某种原因,它没有正确地遍历我的文件。这个 foreach 循环应该做 4 件事中的 1 件事。
1)如果文件大小大于500kb,并且是jpeg,它会重新调整照片大小并将其上传到images目录并将记录添加到数据库中。
2)如果文件大于500kb,并且是png,它将照片转换为jpeg,重新调整大小并将其上传到images目录并将记录添加到数据库中。(注意:我的图像大小调整脚本只处理 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
}
}