Skip to content

fix(global): parseFileExtensionFromUrl 在文件名含 % 时返回空扩展名 - #8015

Merged
c121914yu merged 2 commits into
labring:mainfrom
kevin9327:fix/file-ext-percent-in-filename
Oct 19, 2026
Merged

c121914yu merged 2 commits into
labring:mainfrom
kevin9327:fix/file-ext-percent-in-filename

Conversation

@kevin9327

@kevin9327 kevin9327 commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

问题

parseFileExtensionFromUrl 对 URLSearchParams.get() 已解码的 filename / name 再次执行 decodeURIComponent。文件名包含 % 时会抛出 URIError,随后回退到没有扩展名的代理路径,导致返回空字符串。

例如:?filename=100%25%20done.pdf 应返回 pdf,?name=50%25off.xlsx 应返回 xlsx。

修改

直接对查询参数返回的文件名提取扩展名,删除重复解码及其局部异常回退。查询参数只解码一次,因此原始文件名中的字面量 %2E、%70 会被保留,避免误造或改写扩展名;优先采用 filename / name 查询参数,无可用后缀时回退到原始链接。

验证

  • pnpm test packages/global/test/common/string/string.test.ts packages/global/test/common/string/tools.test.ts:2 个文件、41 个测试通过。
  • 回归覆盖 % 文件名,以及字面量 report%2Epdf、report.%70df 的后缀解析。
  • 改动文件的 TypeScript 检查(Node.js 类型)、ESLint、Prettier 及 git diff --check 通过。

AI assistance: this change was prepared with an AI coding assistant.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-17T22:56:17.910748Z 0d1895f PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@c121914yu
c121914yu merged commit cae610d into labring:main Oct 19, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants