无法通过Artifactory API下载通用仓库PNG文件(报404但UI可下载)
Artifactory API下载PNG文件返回404但UI可正常访问的解决办法
问题现象
通过Artifactory UI可直接下载通用仓库中的PNG文件,但使用API请求时返回404错误:
- PowerShell WebClient提示:
The remote server returned an error: (404) Not Found. - Postman请求
https://<artifactory-url>/artifactory/testpng/test-1.png返回:
{
"errors" : [ {
"status" : 404,
"message" : "Not Found"
} ]
}
常见原因及解决办法
URL路径或格式问题
Artifactory下载文件有两种常用API路径,检查你使用的路径是否正确:- 直接访问路径:需确保仓库名、文件名大小写与实际完全一致(部分Artifactory配置大小写敏感),格式为
https://<artifactory-url>/artifactory/<repo-key>/<file-path> - REST API格式:可尝试使用
https://<artifactory-url>/artifactory/api/storage/<repo-key>/<file-path>?download发起请求
- 直接访问路径:需确保仓库名、文件名大小写与实际完全一致(部分Artifactory配置大小写敏感),格式为
缺少身份验证
UI访问依赖会话登录,但API请求需单独携带认证信息:- Postman中添加Basic Auth,填入Artifactory账号密码;或在请求头添加
X-JFrog-Art-Api: <你的API密钥> - PowerShell中通过以下代码添加认证:
$webClient = New-Object System.Net.WebClient $webClient.Credentials = New-Object System.Net.NetworkCredential("用户名", "密码") # 或使用API密钥 $webClient.Headers.Add("X-JFrog-Art-Api", "你的API密钥")
- Postman中添加Basic Auth,填入Artifactory账号密码;或在请求头添加
仓库权限不足
检查当前账号是否拥有目标仓库的读取权限:- 登录Artifactory UI,进入
Admin > Repositories > Repositories - 找到目标通用仓库,切换到
Permissions标签页 - 确认你的用户/用户组拥有
Read权限,且权限覆盖目标文件路径
- 登录Artifactory UI,进入
路径编码问题
如果文件名或路径包含空格、特殊字符(如&、#),需对URL进行编码:- Postman中可自动处理,或手动替换特殊字符(如空格替换为
%20) - PowerShell中使用
[Uri]::EscapeUriString($filePath)对路径进行编码
- Postman中可自动处理,或手动替换特殊字符(如空格替换为
验证步骤
- 先在Postman中添加正确认证信息,重试原URL
- 若仍返回404,切换到REST API格式的下载URL测试
- 使用管理员账号测试,排除权限类问题
- 核对文件名、仓库名的大小写与UI显示是否完全一致
内容的提问来源于stack exchange,提问作者NaWilk
相关产品推荐
相关产品推荐

