mirror of
https://github.com/myronblair/novacpx
synced 2026-07-28 05:03:14 -05:00
fix: File Manager large uploads had no server-processing feedback and short nginx timeouts
Reaching 100% in the upload progress bar only means the browser finished SENDING the bytes to nginx - it does not mean the server has finished receiving/saving the file. For multi-GB files this gap was invisible, making a genuinely-still-working upload look frozen at 100 percent, leading to a premature reload (confirmed via nginx access log: status 499, client closed request). nginx-panel.conf: added fastcgi_request_buffering off on the admin panels /api/ location so nginx streams the body straight to PHP-FPM instead of fully buffering it to a temp file first and reading it back (a full extra disk I/O pass for large files); also added client_body_timeout/fastcgi_send_timeout/send_timeout at 1800s alongside the existing fastcgi_read_timeout, since those are separate timeout phases that previously still defaulted to 60s. admin.js: added an xhr.upload load-complete handler that switches the dialog to a clear "Finishing up on the server..." state once the send phase hits 100%, so large uploads no longer look stuck during the save phase.
This commit is contained in:
@@ -4861,6 +4861,18 @@ window.fmSubmitUpload = () => {
|
||||
if (pctEl) pctEl.textContent = pct + '%';
|
||||
if (bytesEl) bytesEl.textContent = fmFormatBytes(e.loaded) + ' / ' + fmFormatBytes(e.total);
|
||||
});
|
||||
// Reaching 100% here only means the browser finished SENDING the bytes — the
|
||||
// server (nginx + PHP) still has to receive/move the file, which for large
|
||||
// files can take a genuine extra stretch with no further upload events. Make
|
||||
// that explicit so it doesn't look frozen.
|
||||
xhr.upload.addEventListener('load', () => {
|
||||
const pctEl = document.getElementById('fm-upload-pct');
|
||||
const bytesEl = document.getElementById('fm-upload-bytes');
|
||||
const bar = document.getElementById('fm-upload-bar');
|
||||
if (bar) bar.style.background = '#f59e0b';
|
||||
if (pctEl) pctEl.textContent = 'Finishing up…';
|
||||
if (bytesEl) bytesEl.textContent = 'Upload sent — waiting for the server to finish saving the file. Large files can take a few extra minutes here. Do not close or reload this page.';
|
||||
});
|
||||
|
||||
xhr.onload = () => {
|
||||
let res = null;
|
||||
|
||||
Reference in New Issue
Block a user