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

GitHub Actions中curl命令上传带##标识的war包路径格式错误问题

问题根因

  • URL 中的 # 属于特殊的片段标识符,curl 发起请求时会自动截断 # 及之后的内容,不会发送给服务端,这就是直接写 ## 上传后文件名被截断的原因。
  • 之前尝试加反斜杠转义 # 报错,是因为反斜杠不属于 URL 合法字符,服务端收到后识别路径不合法;直接全局替换 # 为 %23 没用是因为你把编码后的内容用在了本地文件名参数上,本地文件系统找不到对应文件。

解决方案

你定义的两个变量要严格区分职责,分别处理:

  1. 本地文件变量:直接保留原始带 ## 的文件名,不需要任何转义、编码,保证 curl 能找到本地待上传的文件。
  2. URL 拼接变量:把文件名里的每一个 # 手动替换为 URL 编码值 %23,不要加反斜杠。

修正后的代码如下:

run:|
  mvn install     
  # 拼URL用的变量,把#替换为URL编码%23
  FILE_TO_UPLOAD="ARTIFACTID%23%23VERSION.war" 
  # 本地实际文件名,保留原始##
  FILE_TO_UPLOAD2="ARTIFACTID##VERSION.war" 
  echo ${FILE_TO_UPLOAD} #for testing
  TARGET_URL="https://example.com/PATH/${FILE_TO_UPLOAD}"          
  # 变量引用加双引号避免特殊字符解析问题
  curl -u 'username:password' --upload-file "${FILE_TO_UPLOAD2}" "${TARGET_URL}"

内容的提问来源于stack exchange,提问作者4help2

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:15:01