Shades88
Shades88

Reputation: 8360

empty $_POST and $_FILE variable when uploading large files

I was trying to upload a file which is 20MB in size. Now default form upload size is 8MB. When I upload such a file i get $_POST and $_FILE variables empty. Now I want to put a check on file size. If I get both these variables empty, how can I put such a check ?? Please give me suggestions

Upvotes: 2

Views: 1992

Answers (5)

Mob
Mob

Reputation: 11098

Barring any code errors, its most likely your 20MB exceeds your upload limit. Change this permanently from your php.ini file.

Use

ini_set("upload_max_filesize", "30M");

to set your max upload size for that session only. And for POST

Use this

ini_set("post_max_size", "30M");

To check the sizes

   echo ini_get("post_max_size") . "\n";
   echo ini_get("upload_max_filesize");

Upvotes: 4

mario
mario

Reputation: 145482

No idea what you actually want. But you can probe the recieved content size using:

  $_SERVER["CONTENT_LENGTH"]

This should tell how big the POST request body would have been. (The number might be higher than the actual received content, in case of an aborted upload.)

Upvotes: 3

fire
fire

Reputation: 21531

Use MAX_FILE_SIZE as a hidden input field, this will stop the user waiting if the file is larger than the limit and won't execute your code so the variables won't be empty...

The MAX_FILE_SIZE hidden field (measured in bytes) must precede the file input field, and its value is the maximum filesize accepted by PHP. This form element should always be used as it saves users the trouble of waiting for a big file being transferred only to find that it was too large and the transfer failed. Keep in mind: fooling this setting on the browser side is quite easy, so never rely on files with a greater size being blocked by this feature. It is merely a convenience feature for users on the client side of the application. The PHP settings (on the server side) for maximum-size, however, cannot be fooled.

http://www.php.net/manual/en/features.file-upload.post-method.php

Upvotes: 1

pinaldesai
pinaldesai

Reputation: 1815

You can dynamically set your max file size for upload.

write down below statement in your upload function where you are trying to upload file. this will enhance limit up to 50 MB

ini_set("upload_max_filesize", "50M");

If you want to check file variables, you can user alternative HTTP_POST_FILES

$theFileSize = $HTTP_POST_FILES['file']['size'];

Hope this may help you.

Thanks.

Upvotes: 1

Nameless
Nameless

Reputation: 2366

Checkout php://input, the allowed 8mb part of it should be there.

For example echo file_get_contents('php://input');

Upvotes: 1

Related Questions