fix: raise Files group upload cap 20 MiB -> 2 GiB (api + web)

The Files tab dropzone still enforced the old 20 MiB cap client- and
server-side while every other path had moved to 2 GiB. Also corrects the
stale '100 MiB' message on the video upload rejection.
This commit is contained in:
glass beadian 2026-10-15 20:49:46 +00:00
parent ef8d28bc26
commit 613aba236b
4 changed files with 11 additions and 10 deletions

View file

@ -7,7 +7,7 @@ import { GroupFilesService, type FilePage } from "./group-files.service.js";
import type { GroupFile } from "@tactical-media-broadcast-hub/core";
import { verifyWhileStreaming } from "./ocis-webdav.js";
const MAX_FILE_UPLOAD_BYTES = 20 * 1024 * 1024;
const MAX_FILE_UPLOAD_BYTES = 2 * 1024 * 1024 * 1024;
interface FileUpload {
buffer: Buffer;
@ -20,7 +20,7 @@ interface FileUpload {
*
* GET /files list/search, keyset (groupId, senderMxid,
* mimeClass, origin, name, from, to, cursor, limit)
* POST /files/groups/:groupId/upload direct web upload (≤20 MiB, multipart)
* POST /files/groups/:groupId/upload direct web upload (≤2 GiB, multipart)
* GET /files/:id one GroupFile
* GET /files/:id/download stream payload (sha256 re-verified)
* POST /files/:id/retention set retention (keep/until/legalHold)

View file

@ -184,7 +184,7 @@ export class OcisWebdavClient {
async upload(groupId: string, safeName: string, body: Readable, contentType: string): Promise<OcisUploadResult> {
await this.ensureGroupFolder(groupId);
// reva rejects chunked PUTs, so the source drains into a bounded buffer
// (the upload cap is 20 MiB) and goes out with an explicit content-length.
// (the upload cap is 2 GiB) and goes out with an explicit content-length.
const hash = createHash("sha256");
const chunks: Buffer[] = [];
let sizeBytes = 0;

View file

@ -453,7 +453,7 @@ function validateUpload(storageKey: string, mimeType: string, sizeBytes: number)
if (!Number.isSafeInteger(sizeBytes) || sizeBytes < 1) {
throw new BadRequestException("sizeBytes must be a positive safe integer");
}
if (sizeBytes > MAX_VIDEO_UPLOAD_BYTES) throw new BadRequestException("video exceeds the 100 MiB upload limit");
if (sizeBytes > MAX_VIDEO_UPLOAD_BYTES) throw new BadRequestException("video exceeds the 2 GiB upload limit");
}
function requiredRow(row: unknown, description: string): Record<string, unknown> {