$_FILES["file"]["size"] returning 0?
A file which aborts for any reason (upload failed, exceeds limits, etc...) will show as size 0
You have to check for upload SUCCESS before you do ANYTHING with the rest of th eupload data:
if(array_key_exists('file', $_FILES)){
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
echo 'upload was successful';
} else {
die("Upload failed with error code " . $_FILES['file']['error']);
}
}
The error codes are defined here. In your case, if you've hardcoded a 2meg limit and someone uploads a 2.1 meg file, then the error code would be UPLOAD_ERR_INI_SIZE (aka 2
), which is "exceeds limit set in .ini file".
if( $_FILES['file']['size'] && $_FILES['file']['size'] < (2<<20))
Try that.
<< is bitwise shift operator, decimal 2 is binary "10", then add 20 zeros.