I am trying to upload something using PHP and set a limit on the total size that I allow to be uploaded. I want to limit my uploads to 2MB but for some reason whenever I try to check with an if statement like this:
if (($_FILES["file"]["size"] < 2097152))
A file that is large (such as a 7mb file) will pass through the if statement because for whatever reason if I print $_FILES["file"]["size"], it will return 0, instead of the proper number of bytes. If I try to upload something that is smaller, like 342kb the $_FILES["file"]["size"] will return the proper size.
Is there anyway to get $_FILES["file"]["size"] to actually hold the proper size of the file? Otherwise I do not know how to fix this problem.
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:
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”.