当存储库中存在人工制品文件时,Artifactory cURL download返回404 File Not Found错误

当存储库中存在人工制品文件时,Artifactory cURL download返回404 File Not Found错误,curl,http-status-code-404,artifactory,Curl,Http Status Code 404,Artifactory,我正在使用Artifactory在CICD管道中构建工件存储 我已经在PowerSHell脚本中使用cURL API调用编写了工件推送到存储库的脚本: curl.exe -H "X-JFrog-Art-Api: $apiKey" -X PUT $repoUrl -T $artifactFilePath 此操作已成功执行,工件文件按预期存放在指定的工件存储库中 稍后,我尝试使用以下cURL API调用下载相同的工件文件: curl.exe -H "X-JFrog-Art-Api: $apiKey

我正在使用Artifactory在CICD管道中构建工件存储

我已经在PowerSHell脚本中使用cURL API调用编写了工件推送到存储库的脚本:

curl.exe -H "X-JFrog-Art-Api: $apiKey" -X PUT $repoUrl -T $artifactFilePath
此操作已成功执行,工件文件按预期存放在指定的工件存储库中

稍后,我尝试使用以下cURL API调用下载相同的工件文件:

curl.exe -H "X-JFrog-Art-Api: $apiKey" -X GET $artifactUrl
即使我可以浏览Artifactory GUI并清楚地看到子存储库中的工件文件,GET请求的执行仍会返回:

{
  "errors" : [ {
    "status" : 404,
    "message" : "File not found."
  } ]
}
我已经检查并再次检查了存储库路径是否正确(它与初始上传请求中的路径一致)。 我已经为每个请求使用了相同的API密钥,并确认了相关的功能ID在存储库中具有读、写、注释和删除权限

我已经为此工作了几个小时了,到目前为止,我还无法确定或解决这个问题。对此问题的见解或建议将是最受欢迎的

更新:

使用“-v”开关执行cURL请求以获得详细的输出返回:

{
  "errors" : [ {
    "status" : 404,
    "message" : "File not found."
  } ]
}
  • 已连接到www.[artifactoryurl].net(169.177.244.86)端口443(#0)
  • schannel:与www.[Artifactory URL].net端口443的SSL/TLS连接(步骤1/3)
  • schannel:正在检查服务器证书吊销
  • 发送初始握手数据:发送201字节
  • schannel:发送的初始握手数据:发送201字节
  • schannel:与www.[artifactoryURL].net端口443的SSL/TLS连接(步骤2/3)
  • schannel:无法接收握手,需要更多数据
  • schannel:与www.[artifactoryURL].net端口443的SSL/TLS连接(步骤2/3)
  • 沙内尔:加密数据得到2415
  • schannel:加密数据缓冲区:偏移量2415长度4096
  • 发送下一次握手数据:发送126字节
  • schannel:与www.[artifactoryURL].net端口443的SSL/TLS连接(步骤2/3)
  • 沙内尔:加密数据得到了290
  • schannel:加密数据缓冲区:偏移量290长度4096
  • schannel:SSL/TLS握手完成
  • schannel:与www.[artifactoryURL].net端口443的SSL/TLS连接(步骤3/3)
  • schannel:会话缓存中存储的凭据句柄 GET/[Artifactory repo]/[Artifactory repo path]/[artifact file name].txt HTTP/1.1 主机:www.[artifactoryurl].net 用户代理:curl/7.55.1 接受:/ X-JFrog-Art-Api:[Api密钥] 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:----0 0 0 0 0 0 0--::--0:00:07--::--0

  • dud
  • schannel:客户端想要读取102400字节
  • schannel:encdata_缓冲区大小调整为103424
  • schannel:加密数据缓冲区:偏移量0长度103424
  • 沙内尔:加密数据得到1144
  • schannel:加密数据缓冲区:偏移量1144长度103424
  • schannel:解密的数据长度:1115
  • schannel:已添加解密数据:1115
  • schannel:缓存的解密数据:偏移量1115长度102400
  • schannel:加密数据缓冲区:偏移量0长度103424
  • schannel:解密数据缓冲区:偏移量1115长度102400
  • schannel:schannel_recv清理
  • schannel:已解密的数据返回1115
  • schannel:解密数据缓冲区:偏移量0长度102400
  • 与主机www.[Artifactory URL].net的连接#0保持不变 大宗报价

最初的404问题显然是由于最初的curlapi调用中我的工件URL中的错误造成的

上面的日志显示了URL被更正后的调用返回。即使有正确的工件路径,文件似乎也没有按预期下载。 注意,上述详细调用日志中的'dud'是文本文件的内容,这意味着找到并成功读取了该文件


最后,添加带有指定文件名的“--output”开关导致工件文件下载成功。

检查request.log以再次确认