HTML5 の複数ファイル アップローダーから、アップロードされた複数のファイルをループしようとしています。foreach ループを使用していますが、何らかの理由でファイルを正しく反復処理していません。この foreach ループは、4 つのうちの 1 つを実行する必要があります。
1) ファイルサイズが 500kb を超えていて jpeg の場合、写真のサイズを変更して画像ディレクトリにアップロードし、レコードをデータベースに追加します。
2) ファイルが 500kb 以上で png の場合、写真を jpeg に変換し、サイズを変更して画像ディレクトリにアップロードし、レコードをデータベースに追加します。(注: 私の画像サイズ変更スクリプトは jpeg のみを処理します)。
3) ファイルが 5MB より大きい場合は、写真をスキップして次のループに進みます。
3) ファイルが 500kb より小さい場合、写真を images ディレクトリにアップロードし、レコードをデータベースに追加します。
これで、問題なく画像のサイズ変更を行うことができますが、png の写真や 5MB を超える写真の場合は問題があります。何らかの理由で、ループは 5MB を超える写真が配列の最初の要素である場合にのみスキップし、中間または末尾にある場合はスキップしません。間違ったメソッドを使用して配列要素を呼び出してテストしていませんか?
私の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
}
}