You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Thymeleaf链接中反引号`自动转义为%60,如何获取正确下载链接?

解决Thymeleaf中文件名特殊字符`的URL编码问题

问题原因

Thymeleaf处理th:href时,会自动对URL中不符合RFC标准的字符进行编码,反引号()属于这类需要编码的字符,因此会被转成%60`,这是符合URL规范的正常行为。如果后端没有正确解码该参数,就会出现找不到对应文件的情况。

解决方案

方案1:后端正确解码请求参数(推荐)

如果使用Spring Boot这类框架,直接通过@RequestParam接收文件名参数即可,框架会自动将%60解码回原始的`。示例代码:

@GetMapping("/files")
public ResponseEntity<Resource> downloadFile(@RequestParam String fileName) {
    // 此处的fileName已完成解码,包含原始的`字符
    // 执行文件下载逻辑
}

这种方式下,即使链接中显示的是%60,后端拿到的依然是正确的原始文件名,完全不影响文件下载。

方案2:强制Thymeleaf不编码该字符(不推荐)

如果一定要让URL中显示原始的,可以通过th:utext`手动拼接内容,但这种方式会破坏URL规范,还存在XSS风险,不建议使用。示例:

<ul class="list-group list-group-item-action" th:each="file: ${filesList}">
    <a th:utext="'<li class=\'list-group-item list-group-item-action\'><a href=\'http://localhost:8080/files?fileName=' + file + '\'>' + file + '</a></li>'"></a>
</ul>

验证方式

在后端接收参数时打印fileName的值,如果输出为!@#$%^&()_+=-{}[]'~.doc,说明解码成功,此时无论链接中是%60还是原始,都能正常下载文件。

内容的提问来源于stack exchange,提问作者Leonard Kawhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:31:13