From 03584ae05716acb8a5fd1b0fcd25fb19e81c5a70 Mon Sep 17 00:00:00 2001 From: Alexander Onnikov Date: Tue, 11 Mar 2025 09:49:09 +0300 Subject: [PATCH] fix: encode content disposition file name (#8190) * fix: encide content disposition file name Signed-off-by: Alexander Onnikov * fix: recursively remove temporary directory Signed-off-by: Alexander Onnikov --------- Signed-off-by: Alexander Onnikov --- services/datalake/pod-datalake/src/handlers/blob.ts | 5 ++++- services/datalake/pod-datalake/src/handlers/image.ts | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/services/datalake/pod-datalake/src/handlers/blob.ts b/services/datalake/pod-datalake/src/handlers/blob.ts index 7b0ab34fe9..738175bfc2 100644 --- a/services/datalake/pod-datalake/src/handlers/blob.ts +++ b/services/datalake/pod-datalake/src/handlers/blob.ts @@ -64,7 +64,10 @@ export async function handleBlobGet ( res.setHeader('Content-Length', blob.bodyLength.toString()) res.setHeader('Content-Type', blob.contentType ?? '') res.setHeader('Content-Security-Policy', "default-src 'none';") - res.setHeader('Content-Disposition', filename !== undefined ? `attachment; filename="${filename}"` : 'attachment') + res.setHeader( + 'Content-Disposition', + filename !== undefined ? `attachment; filename*=UTF-8''${encodeURIComponent(filename)}"` : 'attachment' + ) res.setHeader('Cache-Control', blob.cacheControl ?? cacheControl) res.setHeader('Last-Modified', new Date(blob.lastModified).toUTCString()) res.setHeader('ETag', blob.etag) diff --git a/services/datalake/pod-datalake/src/handlers/image.ts b/services/datalake/pod-datalake/src/handlers/image.ts index 93d84481d9..a12d8c5ead 100644 --- a/services/datalake/pod-datalake/src/handlers/image.ts +++ b/services/datalake/pod-datalake/src/handlers/image.ts @@ -165,7 +165,7 @@ export async function handleImageGet ( res.on('finish', () => { try { - rmSync(tempDir) + rmSync(tempDir, { recursive: true }) } catch (err: any) { ctx.error('failed to remove temp dir', { workspace, name, error: err }) }