Jump to content

File Upload Warning post content-length of bytes exceeds the limit


trollster

Recommended Posts

I am making a file upload system. The user chooses where to upload using the dynamic drop down list. And this is the problem I am facing right now. This is my form.

<form action="uploader.php" method="POST" enctype="multipart/form-data" name="uploads">		    <label for="file">Choose a file: </label>			    <input type="file" name="userfile" id="userfile"><br/><br/>				    <select id="text-one" name="one">					    <option selected value="base">Select Department</option>					    <option value="CSE" name="cse">Computer Science Engineering</option>					    <option value="ECE" name="ece">Electronics & Communication Engineering</option>					    <option value="MECH" name="mech">Mechanical Engineering</option>				    </select>				    <br /><br/>				    <select id="text-two" name="two">					    <option>Select Semester</option>				    </select>				    <br /><br/>				    <select id="text-three" name="three">					    <option>Select Subject</option>				    </select>				    <br/><br/>		    <button class ="btn btn-primary" button type="submit" name="upload" value="Upload" onClick="val()">Upload</button>	    </form>

And this is my other php file to which it is linked.

<?phpif(isset($_POST['upload'])){  $path1=$_POST['one']."/";  $path2=$_POST['two']."/";  $path3=$_POST['three']."/";    $upload_path=$path1.$path2.$path3;}else{  echo "Select a Subject";  echo "<br>";}$allowed_filetypes = array('.doc','.docx','.jpg','.jpeg','.png','.ppt','.pptx','.xls','.xlsx','.pdf','.txt','.zip','.rar');$max_filesize = 20000000;$filename = $_FILES['userfile']['name'];$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);if(!in_array($ext,$allowed_filetypes))  die("<script LANGUAGE='JavaScript'>	    window.alert('You cannot upload the following type of file!')	    window.location.href='upload.php';	 </SCRIPT>");if(filesize($_FILES['userfile']['size']) > $max_filesize)  die("<script LANGUAGE='JavaScript'>	    window.alert('The file you attempted to upload is too large!')	    window.location.href='upload.php';	 </SCRIPT>");if(!is_writable($upload_path))  die("<script LANGUAGE='JavaScript'>	    window.alert('You cannot upload to the specified directory!')	    window.location.href='upload.php';	 </SCRIPT>");if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename))  echo ("<script LANGUAGE='JavaScript'>		  window.alert('Your file has been uploaded successfully')		  window.location.href='upload.php';	    </SCRIPT>");else  echo ("<script LANGUAGE='JavaScript'>		  window.alert('There was an error during the file upload!')		  window.location.href='upload.php';	    </SCRIPT>");?>

I have edited the phpini file with the following settings and also made a .htaccess file in the php folder.upload_max_filesize 25M post_max_size 25M memory_limit 64MBut when I intentionally upload a file greater than 25 MB, I get the error as given in the title. Also, considering the max file size is being violated, it does not give the error related to the file size, i.e The file you attempted to upload is too large, it says You cannot upload the following type of file. And in the background that post length warning thing comes.Please help me with this. I am on my localhost.

Link to comment
Share on other sites

When the post_max_size is exceeded the $_POST and $_FILES arrays are both empty, there won't be any data in either one. It shows the error about the type because the filename is empty, which means you get an empty extension, and the empty extension is not in the list of allowed types.

Link to comment
Share on other sites

check for the file size first, there is dependency on the extension condition of there actually being an extension, so as not to provide a false positive. Or make sure $ext != '' as part of the extension check condition.

Link to comment
Share on other sites

If you want to detect if the post max size was exceeded then one way is to have your form send a value in $_GET that you can use to determine if the form was submitted. If the form was submitted but $_POST and $_FILES are empty then it was too large.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...