Unable to upload multiple files in Firefox

I am testing Seafile 12 in a docker. I have noticed, that when I upload multiple files in Chrome based browser, it works, but when I do the same in Firefox, only one file gets uploaded. Tested on Kubuntu 24.04, Firefox and Vivaldi are current.

I just tried to do the same on mine, and it worked with firefox. I have a similar set up, seafile 12 docker, with the client running firefox on Pop_OS with KDE. I tried by dragging some files and a folder to the seafile firefox window from dolphin, and by using both the “upload files” and “upload folder” buttons in the UI.

Are you doing it another way? Do you get any errors in the console (press F12 in firefox to see this)? Do you get any errors in the seafile logs?

I am doing it the same way as you. When I use “Upload files” and select multiple files and / or directories, it works in all browsers. When I just drag several files into Seafile library in Firefox, only the first one is uploaded. I have tested with several users and libraries and also on different Linux computers (all Kubuntu however). In Vivaldi and other Chromium-based browsers everything works. I do not see any errors in the browser console and in the Seafile logs.

Maybe try disabling any browser extensions you have and then try again?

Have tried to disable all FF extensions already - no luck.
But the upload of multiple files works in FF on Windows, so it is sth. specific for Ubuntu builds of FF, be they deb or snap. It fails in both.

I think you are right. I think I read that ubuntu setup the .deb so it just installs the snap, but even if not they could be doing something in their build system that’s common to both packages. I did just test the official flatpak version and it worked for me, so that might work for you too.

same in flatpak FF. Well, it is a minor issue, but it drives me crazy. could it be related to nginx config somehow? I have:

server {
listen 80;
server_name seacloud.no-ip.info;
rewrite ^ https://$http_host$request_uri? permanent; # force redirect http to https
server_tokens off;

    client_max_body_size 0;

    location / {
    proxy_pass http://<seafile internal IP>:80;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

}

server {
    listen 443 ssl;
    ssl_certificate /path/to/fullchain.pem; # managed by Certbot
    ssl_certificate_key /path/to/privkey.pem; # managed by Certbot

    server_name seacloud.no-ip.info;
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:5m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDS>
    ssl_prefer_server_ciphers on;
    proxy_set_header X-Forwarded-For $remote_addr;
    server_tokens off;

    client_max_body_size 0;

    location / {
        proxy_pass http://<seafile internal IP>:80;
       proxy_read_timeout 310s;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Connection "";
        proxy_http_version 1.1;

        client_max_body_size 0;
    }

    location /sdoc-server/ {
        proxy_pass         http://<seafile internal IP>:8888/;
        proxy_redirect     off;
        proxy_set_header   Host              $host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host  $server_name;
        proxy_set_header   X-Forwarded-Proto $scheme;

        client_max_body_size 100m;
    }

    location /socket.io/ {
        proxy_pass http://<seafile internal IP>:8888/socket.io/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_redirect off;

        proxy_buffers 8 32k;
        proxy_buffer_size 64k;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
    }

}

Is there something I can improve?

Well, it seems to be a Firefox bug, upload of multiple files does not work when using DnD from a QT app: Multiple file uploading via drag and drop to Firefox does not work · Issue #1842 · doublecmd/doublecmd · GitHub

I’m no expert, but your nginx config looks fine to me. I have a lot more crap in mine, but I think that’s mostly because I have several other things behind it that have their own requirements.

The drag and drop must work for me from dolphin because I’m running such an old version of QT with my old KDE version.