fix: encode content disposition file name (#8190)

* fix: encide content disposition file name

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>

* fix: recursively remove temporary directory

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>

---------

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
This commit is contained in:
Alexander Onnikov 2025-03-11 09:49:09 +03:00 committed by GitHub
parent a89f75ae9f
commit 03584ae057
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 5 additions and 2 deletions

View File

@ -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)

View File

@ -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 })
}