diff --git a/src/file/file.controller.ts b/src/file/file.controller.ts index 94edf9e..e09539f 100644 --- a/src/file/file.controller.ts +++ b/src/file/file.controller.ts @@ -153,6 +153,7 @@ export async function fileDownloadHandler( res: FastifyReply ) { const { fileId } = req.params as { fileId: string }; + const { contentDisposition } = req.query as { contentDisposition: boolean }; try { const file = await getFile(fileId, req.user.tenantId); @@ -162,7 +163,11 @@ export async function fileDownloadHandler( if (file.mimeType == "folder") return res.code(400).send({ error: "cannot download a folder" }); - const signedUrl = await getFileUrlS3(file.pid, file.name); + const signedUrl = await getFileUrlS3( + file.pid, + file.name, + contentDisposition + ); return res.code(200).send({ url: signedUrl }); } catch (err) { return err; diff --git a/src/utils/s3.ts b/src/utils/s3.ts index 3623ac8..e02d1a2 100644 --- a/src/utils/s3.ts +++ b/src/utils/s3.ts @@ -87,12 +87,18 @@ export async function completeMultiPartUpload( await client.send(command); } -export async function getFileUrlS3(key: string, name: string | null) { +export async function getFileUrlS3( + key: string, + name: string | null, + contentDisposition: boolean +) { const command = new GetObjectCommand({ Bucket: BUCKET, Key: key, ResponseContentDisposition: - name !== null ? `attachment; filename=${name}` : undefined, + contentDisposition && name !== null + ? `attachment; filename=${name}` + : undefined, }); return await getSignedUrl(client, command, { expiresIn: 300 });