Skip to content

[Feature Request] "Download All" button for share pages #3397

@OnAirGame

Description

@OnAirGame

Self Checks

  • I have read the Contributing Guide and Language Policy.
  • I have searched for existing issues search for existing issues, including closed ones.
  • I confirm that I am using English to submit this report, otherwise it will be closed. / 请使用英语提交,否则会被关闭。
  • Please do not modify this template :) and fill in all the required fields.

1. Is this request related to a challenge you're experiencing? Tell me about your story.

When sharing a folder with clients via a share link (e.g. https://cloud.below.co.nz/s/abc/password), there is no way to download all files at once.

Currently, the client has to:

  1. Manually select files (click each one or Ctrl+A)
  2. But Ctrl+A only selects files on the current page (default 100 per page)
  3. For a folder with 360 photos, they have to select page by page
  4. Then click the download button and choose a download method

This is a major UX issue for client-facing share links. Competitors like Frame.io, Dropbox, and WeTransfer all have a single "Download All" button on shared folders.

Requested feature: A "Download All" button in the toolbar on share pages (and optionally the main file manager) that:

  • Selects all files in the current folder, bypassing pagination
  • Triggers the existing download flow (archive method picker)
  • Works for both logged-in users and anonymous share link visitors

This would also help with the related limitation that "Select All" (Ctrl+A) only selects the current page of results, not all files in the folder.

2. Additional context or comments

I've worked around this by injecting a custom "Download All" button via the Custom Footer HTML setting. The script:

  1. Fetches all files via GET /api/v4/file?uri=...&page_size=2000 with auth token from localStorage
  2. Dispatches fileManagerSlice/setSelected to select all files in the Redux store
  3. Programmatically clicks the existing button[aria-label="Download"]

This works but is fragile - it depends on MUI CSS class names, Redux slice names, and localStorage key formats that could change between versions.

A native implementation would be much more reliable and would benefit all Cloudreve users who share folders with external clients.

Related issues I encountered while building the workaround:

  • Server-side archive returns empty zip files on shared folders (HTTP 200 but 0 bytes of content) - this may be a separate bug
  • Browser-side archiving has a 4GB limit but doesn't warn the user before starting
  • The batch download snackbar shows no progress information (file count, speed, current file)

Happy to provide more technical details or help test a native implementation.

3. Can you help us with this feature?

  • I am interested in contributing to this feature.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions