2

I am facing a problem which is related to PHP file upload . I am trying to submit a form using AJAX . This ajax request contains text variables and file(s) . When I am trying to send only one file then everything is going okay but in case I am sending more than one file. I am getting 413 Request Entity Too Large error . I am using Apache . Here is my code

const data = new FormData();
data.append('name', 'my upload file');

for (const i = 1; i <= 4; i++) {
    const img = $(`#src${i}`).find('img').attr('src');
    data.append(`image${i}`, img || '');
}

$.ajax({
    type: "POST",
    url: "server.php",
    data: data,
    cache: false,
    processData: false,
    contentType: false,
    success: (result) => {
        console.log(1);
    }
});

All my uploaded files are lesser than 700KB , I also checked the PHP configuration using ini_get_all() and I found that post_max_size is 48MB , upload_max_filesize is 32MB . I am not getting that what is the reason for that problem .

To check that whether I am exceeding the allowed upload limit , I added four files (each with 10KB) but it also generating same problem while I am able to send one file of 400KB . Is there any way to identify the root cause of this problem.

Deepak Dixit
  • 1,510
  • 15
  • 24
  • Possible duplicate of [Request Entity Too Large PHP](http://stackoverflow.com/questions/3718571/request-entity-too-large-php) – Will B. May 28 '16 at 06:14

3 Answers3

3

You need to change your nginx conf (/usr/local/nginx/conf/nginx.conf) setting to this

client_max_body_size 512M;//set it to higher mb

After setting this value you would need to restart nginx

service nginx restart
chandresh_cool
  • 11,753
  • 3
  • 30
  • 45
1

See http://httpd.apache.org/docs/2.0/mod/core.html#limitrequestbody

In your httpd.conf or .htaccess file change

LimitRequestBody 0 #Unlimited

Then restart Apache to ensure change is updated.

You can also check your httpd/apache logs to see if you are receiving a ModSecurity error. If so, update your ModSecurity configuration. /etc/modsecurity/modsecurity.conf

https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#SecRequestBodyNoFilesLimit

Will B.
  • 17,883
  • 4
  • 67
  • 69
0

You need to set the value of upload_max_filesize and post_max_size in your php.ini :

; Maximum allowed size for uploaded files. upload_max_filesize = 64M

; Must be greater than or equal to upload_max_filesize post_max_size = 64M

After modifying php.ini file(s), you need to restart your HTTP server to use new configuration.

You may also increase the size using .htaccess in php

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300
Tirthraj Barot
  • 2,671
  • 2
  • 17
  • 33
  • Please check my last paragraph . – Deepak Dixit May 30 '16 at 06:16
  • Deepak Is it because you need to pass some array or something? – Tirthraj Barot May 30 '16 at 06:22
  • Because I just referred to a similar link and they did it in a little different manner. Check this out.. [Multiple files upload using ajax ](http://abandon.ie/notebook/simple-file-uploads-using-jquery-ajax). As your single upload works well and the problem is with multiple files... It may be some array issue. – Tirthraj Barot May 30 '16 at 06:23
  • I don't know the root cause, but this is not related to the size limit as I am thinking . Is there anything to limit maximum upload files in Apache configuration ? – Deepak Dixit May 30 '16 at 06:26
  • Probably nothing more than what mentioned in the answer.. But i still think that the mistake shall be about the array.. Why don't you test it by hosting it on 000webhost or some free domains.. It might clear the idea about the actual problem. – Tirthraj Barot May 30 '16 at 06:56
  • About which array are you talking ? – Deepak Dixit May 30 '16 at 06:57
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/113287/discussion-between-tirthraj-barot-and-deepak-dixit). – Tirthraj Barot May 30 '16 at 07:03