Issue regarding upload of larges files (around 3/4GB)

Hello,

I know there are already threads on this topic, but I haven’t been able to solve my problem.
When I try to upload large files, the progress bar gets stuck indefinitely on “estimating time remaining.”

Here’s my system information and what I’ve tried.

  • Nextcloud Server version
    33.0.2
  • Operating system and version
    Ubuntu 24.04
  • Web server and version
    Apache/2.4.58
    PHP version 8.3.6

I edited the both two php.ini under etc/php/8.3/cli/php.ini and under etc/php/8.3/apache2 this way

post_max_size=4G

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
; PHP: Description of core php.ini directives - Manual
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; PHP: Description of core php.ini directives - Manual
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
; PHP: Description of core php.ini directives - Manual
upload_max_filesize = 4G

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 200

**I also edited the .user.ini under /var/www/netxcloud and added **
memory_limit=-1

Please monitor your browser console and check your logs as described in the support template. Also, define “large”.

Finally, other factors requested in the support template could be relevant.

The nextloud.log and error.log are not modified after I tried uploading large files.

The browser console show

Uncaught (in promise) AxiosError: Request failed with status code 403
    r http://localhost/dist/core-common.js?v=b795034e-0:1
    r http://localhost/dist/core-common.js?v=b795034e-0:1
    x http://localhost/dist/core-common.js?v=b795034e-0:1
    p http://localhost/dist/core-common.js?v=b795034e-0:1
    p http://localhost/dist/core-common.js?v=b795034e-0:1
    f http://localhost/dist/core-common.js?v=b795034e-0:1
    promise callback*_request http://localhost/dist/core-common.js?v=b795034e-0:1
    request http://localhost/dist/core-common.js?v=b795034e-0:1
    a http://localhost/dist/core-common.js?v=b795034e-0:1
    t http://localhost/dist/files-main.js?v=b795034e-0:1
    upload http://localhost/dist/files-main.js?v=b795034e-0:1
    <anonymous> http://localhost/dist/core-common.js?v=b795034e-0:1
    i http://localhost/dist/core-common.js?v=b795034e-0:1
    upload http://localhost/dist/files-main.js?v=b795034e-0:1
    uploadDirectory http://localhost/dist/files-main.js?v=b795034e-0:1
    async* http://localhost/dist/core-common.js?v=b795034e-0:1
    i http://localhost/dist/core-common.js?v=b795034e-0:1
    uploadDirectory http://localhost/dist/files-main.js?v=b795034e-0:1
    batchUpload http://localhost/dist/files-main.js?v=b795034e-0:1
    async* http://localhost/dist/core-common.js?v=b795034e-0:1
    i http://localhost/dist/core-common.js?v=b795034e-0:1
    batchUpload http://localhost/dist/files-main.js?v=b795034e-0:1
    onPick http://localhost/dist/files-main.js?v=b795034e-0:1
    sn http://localhost/dist/core-common.js?v=b795034e-0:1
    n http://localhost/dist/core-common.js?v=b795034e-0:1
    _wrapper http://localhost/dist/core-common.js?v=b795034e-0:1
    Mr http://localhost/dist/core-common.js?v=b795034e-0:1
    yt http://localhost/dist/core-common.js?v=b795034e-0:1
    jr http://localhost/dist/core-common.js?v=b795034e-0:1
    _ http://localhost/dist/core-common.js?v=b795034e-0:1
    m http://localhost/dist/core-common.js?v=b795034e-0:1
    f http://localhost/dist/core-common.js?v=b795034e-0:1
    m http://localhost/dist/core-common.js?v=b795034e-0:1
    ki http://localhost/dist/core-common.js?v=b795034e-0:1
    _update http://localhost/dist/core-common.js?v=b795034e-0:1
    a http://localhost/dist/core-common.js?v=b795034e-0:1
    get http://localhost/dist/core-common.js?v=b795034e-0:1
    e http://localhost/dist/core-common.js?v=b795034e-0:1
    mount http://localhost/dist/core-common.js?v=b795034e-0:1
    $mount http://localhost/dist/core-common.js?v=b795034e-0:1
    init http://localhost/dist/core-common.js?v=b795034e-0:1
    m http://localhost/dist/core-common.js?v=b795034e-0:1
    m http://localhost/dist/core-common.js?v=b795034e-0:1
    F http://localhost/dist/core-common.js?v=b795034e-0:1
    F http://localhost/dist/core-common.js?v=b795034e-0:1
    F http://localhost/dist/core-common.js?v=b795034e-0:1
    F http://localhost/dist/core-common.js?v=b795034e-0:1
    F http://localhost/dist/core-common.js?v=b795034e-0:1
    F http://localhost/dist/core-common.js?v=b795034e-0:1
    ki http://localhost/dist/core-common.js?v=b795034e-0:1
    _update http://localhost/dist/core-common.js?v=b795034e-0:1
    a http://localhost/dist/core-common.js?v=b795034e-0:1
    get http://localhost/dist/core-common.js?v=b795034e-0:1
    run http://localhost/dist/core-common.js?v=b795034e-0:1
    ta http://localhost/dist/core-common.js?v=b795034e-0:1
    bn http://localhost/dist/core-common.js?v=b795034e-0:1
core-common.js:1:4404675
    upload http://localhost/dist/files-main.js?v=b795034e-0:1
    AsyncFunctionThrow self-hosted:784
    (Asynchrone : async)
    <anonyme> http://localhost/dist/core-common.js?v=b795034e-0:1
    i http://localhost/dist/core-common.js?v=b795034e-0:1
    upload http://localhost/dist/files-main.js?v=b795034e-0:1
    uploadDirectory http://localhost/dist/files-main.js?v=b795034e-0:1
    InterpretGeneratorResume self-hosted:1312
    AsyncFunctionNext self-hosted:780
    (Asynchrone : async)
    <anonyme> http://localhost/dist/core-common.js?v=b795034e-0:1
    i http://localhost/dist/core-common.js?v=b795034e-0:1
    uploadDirectory http://localhost/dist/files-main.js?v=b795034e-0:1
    batchUpload http://localhost/dist/files-main.js?v=b795034e-0:1
    InterpretGeneratorResume self-hosted:1312
    AsyncFunctionNext self-hosted:780
    (Asynchrone : async)
    <anonyme> http://localhost/dist/core-common.js?v=b795034e-0:1
    i http://localhost/dist/core-common.js?v=b795034e-0:1
    batchUpload http://localhost/dist/files-main.js?v=b795034e-0:1
    onPick http://localhost/dist/files-main.js?v=b795034e-0:1
    sn http://localhost/dist/core-common.js?v=b795034e-0:1
    n http://localhost/dist/core-common.js?v=b795034e-0:1
    _wrapper http://localhost/dist/core-common.js?v=b795034e-0:1
    (Asynchrone : EventListener.handleEvent)
    Mr http://localhost/dist/core-common.js?v=b795034e-0:1
    yt http://localhost/dist/core-common.js?v=b795034e-0:1
    jr http://localhost/dist/core-common.js?v=b795034e-0:1
    _ http://localhost/dist/core-common.js?v=b795034e-0:1
    m http://localhost/dist/core-common.js?v=b795034e-0:1
    f http://localhost/dist/core-common.js?v=b795034e-0:1
    m http://localhost/dist/core-common.js?v=b795034e-0:1
    ki http://localhost/dist/core-common.js?v=b795034e-0:1
    _update http://localhost/dist/core-common.js?v=b795034e-0:1
    a http://localhost/dist/core-common.js?v=b795034e-0:1
    get http://localhost/dist/core-common.js?v=b795034e-0:1
    e http://localhost/dist/core-common.js?v=b795034e-0:1
    mount http://localhost/dist/core-common.js?v=b795034e-0:1
    $mount http://localhost/dist/core-common.js?v=b795034e-0:1
    init http://localhost/dist/core-common.js?v=b795034e-0:1
    m http://localhost/dist/core-common.js?v=b795034e-0:1
    m http://localhost/dist/core-common.js?v=b795034e-0:1
    F http://localhost/dist/core-common.js?v=b795034e-0:1
    F http://localhost/dist/core-common.js?v=b795034e-0:1
    F http://localhost/dist/core-common.js?v=b795034e-0:1
    F http://localhost/dist/core-common.js?v=b795034e-0:1
    F http://localhost/dist/core-common.js?v=b795034e-0:1
    F http://localhost/dist/core-common.js?v=b795034e-0:1
    ki http://localhost/dist/core-common.js?v=b795034e-0:1
    _update http://localhost/dist/core-common.js?v=b795034e-0:1
    a http://localhost/dist/core-common.js?v=b795034e-0:1
    get http://localhost/dist/core-common.js?v=b795034e-0:1
    run http://localhost/dist/core-common.js?v=b795034e-0:1
    ta http://localhost/dist/core-common.js?v=b795034e-0:1
    bn http://localhost/dist/core-common.js?v=b795034e-0:1

when uploading fail

When uploading works (with small files), it shows

[ERROR] files: Error while fetching content 
Object { app: "files", uid: "corias", level: 2, error: DOMException }
\u200b
app: "files"
\u200b
error: DOMException: The operation was aborted. 
\u200b
\u200b
code: 20
\u200b
\u200b
columnNumber: 130736
\u200b
\u200b
data: null
\u200b
\u200b
filename: "http://localhost/dist/files-main.js?v=b795034e-0"
\u200b
\u200b
lineNumber: 1
\u200b
\u200b
message: "The operation was aborted. "
\u200b
\u200b
name: "AbortError"
\u200b
\u200b
result: 2152923156
\u200b
\u200b
stack: "fetchContent@http://localhost/dist/files-main.js?v=b795034e-0:1:130736\nonUpload@http://localhost/dist/files-main.js?v=b795034e-0:1:132250\nsn@http://localhost/dist/core-common.js?v=b795034e-0:1:2365049\nn@http://localhost/dist/core-common.js?v=b795034e-0:1:2357800\nsn@http://localhost/dist/core-common.js?v=b795034e-0:1:2365049\n85471/e.prototype.$emit@http://localhost/dist/core-common.js?v=b795034e-0:1:2386317\nonUploadCompletion@http://localhost/dist/files-main.js?v=b795034e-0:1:633649\n_notifyAll@http://localhost/dist/files-main.js?v=b795034e-0:1:619635\n66860/batchUpload/<@http://localhost/dist/files-main.js?v=b795034e-0:1:620393\nasync*@http://localhost/dist/core-common.js?v=b795034e-0:1:4610366\ni@http://localhost/dist/core-common.js?v=b795034e-0:1:4610106\nbatchUpload@http://localhost/dist/files-main.js?v=b795034e-0:1:619754\nonPick@http://localhost/dist/files-main.js?v=b795034e-0:1:632478\nsn@http://localhost/dist/core-common.js?v=b795034e-0:1:2365049\nn@http://localhost/dist/core-common.js?v=b795034e-0:1:2357800\n85471/Mr/i._wrapper@http://localhost/dist/core-common.js?v=b795034e-0:1:2397971\nEventListener.handleEvent*Mr@http://localhost/dist/core-common.js?v=b795034e-0:1:2397997\nyt@http://localhost/dist/core-common.js?v=b795034e-0:1:2358087\njr@http://localhost/dist/core-common.js?v=b795034e-0:1:2398378\n_@http://localhost/dist/core-common.js?v=b795034e-0:1:2407193\nm@http://localhost/dist/core-common.js?v=b795034e-0:1:2406502\nf@http://localhost/dist/core-common.js?v=b795034e-0:1:2406950\nm@http://localhost/dist/core-common.js?v=b795034e-0:1:2406487\n85471/ki@http://localhost/dist/core-common.js?v=b795034e-0:1:2410493\n85471/e.prototype._update@http://localhost/dist/core-common.js?v=b795034e-0:1:2386469\na@http://localhost/dist/core-common.js?v=b795034e-0:1:2417945\n85471/e.prototype.get@http://localhost/dist/core-common.js?v=b795034e-0:1:2368590\ne@http://localhost/dist/core-common.js?v=b795034e-0:1:2368503\n85471/Na.prototype.$mount/<@http://localhost/dist/core-common.js?v=b795034e-0:1:2417969\n85471/Na.prototype.$mount@http://localhost/dist/core-common.js?v=b795034e-0:1:2418187\ninit@http://localhost/dist/core-common.js?v=b795034e-0:1:2373489\n85471/m/<@http://localhost/dist/core-common.js?v=b795034e-0:1:2406097\nm@http://localhost/dist/core-common.js?v=b795034e-0:1:2406373\n85471/F/<@http://localhost/dist/core-common.js?v=b795034e-0:1:2409221\nF@http://localhost/dist/core-common.js?v=b795034e-0:1:2409405\n85471/F/<@http://localhost/dist/core-common.js?v=b795034e-0:1:2408930\nF@http://localhost/dist/core-common.js?v=b795034e-0:1:2409405\n85471/F/<@http://localhost/dist/core-common.js?v=b795034e-0:1:2408930\nF@http://localhost/dist/core-common.js?v=b795034e-0:1:2409405\n85471/ki@http://localhost/dist/core-common.js?v=b795034e-0:1:2410541\n85471/e.prototype._update@http://localhost/dist/core-common.js?v=b795034e-0:1:2386452\na@http://localhost/dist/core-common.js?v=b795034e-0:1:2417945\n85471/e.prototype.get@http://localhost/dist/core-common.js?v=b795034e-0:1:2368590\n85471/e.prototype.run@http://localhost/dist/core-common.js?v=b795034e-0:1:2369323\nta@http://localhost/dist/core-common.js?v=b795034e-0:1:2371296\n85471/bn/<@http://localhost/dist/core-common.js?v=b795034e-0:1:2366096\n"
\u200b
\u200b
<prototype>: DOMExceptionPrototype { name: Getter, message: Getter, INDEX_SIZE_ERR: 1, \u2026 }
\u200b
level: 2
\u200b
uid: "corias"

Which request in your Network tab of the browser inspector is returning a 403?

Also, since there are multiple ways of uploading, can you be more specific about your upload process?

We also lack your configuration and install method, whether you’re using Cloudflare or similar, etc.

(Again, this is all requested in the support template so you’re kind of making it more challenging to assist you).

I’am sorry for the lack of informations.
I installed nextcloud “manually” following a tutorial, the same way I already installed a previous version few years ago.

i do not use cloudflare

I don’t see any errors regarding 403 in network tab of developper tool of the browser.

I try to upload using the New/upload file button

I tried both with the localhot or IP in the url and the domain just to check if https is required

here is my anonymised config.php

<?php
$CONFIG = array (
  'instanceid' => 'ocwkb1f79na1',
  'passwordsalt' => '*************,
  'secret' => ********************,
  'trusted_domains' => 
  array (
    0 => 'localhost',
    1 => '192.168.1.35',
    2 => '**********',
    3 => '*********,
  ),
  'datadirectory' => '/var/www/nextcloud/data',
  'dbtype' => 'mysql',
  'version' => '33.0.2.2',
  'overwrite.cli.url' => 'http://192.168.1.35',
  'dbname' => 'Nextcloud',
  'dbhost' => 'localhost',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'oc_oc_admin',
  'dbpassword' => '**************,
  'installed' => true,
  'force_language' => 'fr',
  'maintenance' => false,
);