1
0

fix(server): handle missing ContentType in attachment download

GET /api/attachments/:id crashes with "Cannot read properties of
undefined (reading extension)" when the S3 object has no ContentType
metadata. This happens when files are uploaded without explicit content
type (e.g., via API integrations).

mime.extension(undefined) returns undefined, which then causes the
Content-Disposition header template to fail.

Fix: fallback to "application/octet-stream" when ContentType is missing,
and "bin" when mime.extension() returns undefined.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Y8C68
2026-04-03 06:11:28 +00:00
parent e9747f4f9e
commit dd58f50387
@@ -93,11 +93,12 @@ export class AttachmentsController {
const data = await this.attachmentsApplication.get(documentId);
const byte = await data.Body.transformToByteArray();
const extension = mime.extension(data.ContentType);
const contentType = data.ContentType || 'application/octet-stream';
const extension = mime.extension(contentType) || 'bin';
const buffer = Buffer.from(byte);
res.set('Content-Disposition', `filename="${documentId}.${extension}"`);
res.set('Content-Type', data.ContentType);
res.set('Content-Type', contentType);
res.send(buffer);
}