In PHP è semplice validare l'upload di immagini multiple.
Vogliamo accettare solo immagini JPEG, con una dimensione massima di 500 Kb e una larghezza non inferiore ai 1920 pixel. In altre parole, accettiamo solo immagini già ottimizzate per il web.
Possiamo definire la seguente soluzione.
define( 'MAX_IMAGE_SIZE', 500000 );
define( 'MIN_IMAGE_WIDTH', 1920 );
function validate_multiple_images_upload( $filename = 'images' ) {
$valid = true;
$countfiles = count( $_FILES[$filename]['name'] );
if( $countfiles === 0 ) {
return false;
}
for( $index = 0; $index < $countfiles; $index++ ) {
switch ( $_FILES[$filename]['error'][$index] ) {
case UPLOAD_ERR_OK:
break;
case UPLOAD_ERR_NO_FILE:
$valid = false;
break;
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
$valid = false;
break;
default:
$valid = false;
break;
}
if ( $_FILES[$filename]['size'][$index] > MAX_IMAGE_SIZE ) {
$valid = false;
break;
}
$finfo = new finfo(FILEINFO_MIME_TYPE);
if (false === $ext = array_search(
$finfo->file( $_FILES[$filename]['tmp_name'][$index] ),
array(
'jpg' => 'image/jpeg'
),
true
)) {
$valid = false;
break;
}
list( $width ) = getimagesize( $_FILES[$filename]['tmp_name'][$index] );
if( intval( $width ) < MIN_IMAGE_WIDTH ) {
$valid = false;
break;
}
}
return $valid;
}
In pratica la nostra funzione di validazione va invocata prima della funzione move_uploaded_file(). Quest'ultima funzione deve essere invocata solo se la validazione viene superata.