Not Solved Need help to understand javascript coding
#1
Not Solved
(2021-02-23, 01:18 AM)shedrock Wrote: It pops up a window that says: You can upload a maximum of 872.42 bytes at once.

So, because I have seen messages like this on occasion, and the number does not make sense to me, I looked into the code a little deeper.

post.js has a checkAttachments function which seems to

1. verify attachment count is not greater than php_max_file_uploads if it's defined as not equal to 0, and
2. verify sum totalSize of all attachments is not greater than php_max_upload_size if it's defined as greater than 0.

If either one is greater, it triggers an alert. In the above case, the value 872.42 is derived from
var php_max_upload_size_pretty = Math.round(php_max_upload_size / 1e4) / 1e2;


So, here's my questions:

1. What is the purpose of dividing by 1e4, then by 1e2 then calling the limit in bytes?
2. My php directives post_max_size is 16M and upload_max_filesize is 8M. If I try to upload 10 images ranging in size from 2MB to 5MB I get a message "You can upload a maximum of 16.78 bytes at once." Where does 16.78 come from? I thought 16M*1024=16384000. I would anticipate the error message would reply 16.38
3. With the values set as above, why would php_max_upload_size be 16M, apparently from line 1483, rather than 8M from line 1479?

So, it's just a niggling annoyance, but I'd like to make sure I understand exactly what is happening here.

newreply.php
1474      $php_max_upload_filesize = return_bytes(ini_get('max_upload_filesize'));
1475      $php_post_max_size = return_bytes(ini_get('post_max_size'));
1476  
1477      if ($php_max_upload_filesize != 0 && $php_post_max_size != 0)
1478      {
1479          $php_max_upload_size = min($php_max_upload_filesize, $php_post_max_size);
1480      }
1481      else
1482      {
1483          $php_max_upload_size = max($php_max_upload_filesize, $php_post_max_size);
1484      }
1485  
1486      $php_max_file_uploads = (int)ini_get('max_file_uploads');

and post.js
 171      checkAttachments: function()
 172      {
 173          var files = $("input[type='file']");
 174          var file = files.get(0);
 175          if (!file)
 176          {
 177              return true;
 178          }
 179  
 180          if (file.files.length > php_max_file_uploads && php_max_file_uploads != 0)
 181          {
 182              alert(lang.attachment_too_many_files.replace('{1}', php_max_file_uploads));
 183              file.value="";
 184              return false;
 185          }
 186  
 187          var totalSize = 0;
 188          files.each(function()
 189          {
 190              for (var i = 0; i < this.files.length; i++)
 191              {
 192                  totalSize += this.files[i].size;
 193              }
 194          });
 195  
 196          if (totalSize > php_max_upload_size && php_max_upload_size > 0)
 197          {
 198              var php_max_upload_size_pretty = Math.round(php_max_upload_size / 1e4) / 1e2;
 199              alert(lang.attachment_too_big_upload.replace('{1}', php_max_upload_size_pretty));
 200              file.value="";
 201              return false;
 202          }
 203  
 204          return true;
 205      }

Ok, ignore question 2. return_bytes is a function in functions_post.php which uses a switch/case without a break. At first I thought it was simply a wrong multiplier. 16M = 16 * 1024 *1024 = 16,777,216.

However, there's an unintentional error in the coding for newreply.php line 1486, newthread.php line 1126, and editpost.php line 934.
$php_max_upload_filesize = return_bytes(ini_get('max_upload_filesize'));
will always return 0 if the directive is not defined.

The correct php directive is upload_max_filesize, not max_upload_filesize.

To make the new coding work, I have adjusted my php directives.

Now using
memory_limit 64M, which should be larger than
post_max_size 48M, which is for all post data. For large files, or multiple files, this should be larger than
upload_max_filesize 32M

I will evaluate the effects of these changes on performance.
Reply


Messages In This Thread
Need help to understand javascript coding - by HLFadmin - 2021-02-24, 01:27 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)