【发布时间】:2017-10-12 06:52:09
【问题描述】:
我正在使用下面的代码通过 Artifactory 的 REST API 上传文件。 我的问题是,当我通过 GUI 查看文件时,我收到以下消息:
客户端未发布校验和值。如果您信任上传的 工件,您可以通过单击“修复”来接受实际的校验和 “校验和”按钮。
如何修复上传以使此消息消失?
如果我通过 GUI 上传文件,我没有提供校验和值,那么为什么我在使用 API 时必须这样做?使用 API 修复校验和时,我可以调用一个额外的函数吗?
我也看到了这个设置:https://www.jfrog.com/confluence/display/RTF20/Handling+Checksums 这和我的问题有关系吗?
string inFilePath = @"C:\temp\file.ext";
string inUrl = @"domain.com/repoKey/";
string username = "username";
string apiKey = "apikey";
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes(username+":"+apiKey)));
using (var stream = File.OpenRead(inFilePath))
{
var response = client.PutAsync(inUrl + stream.Name, new StreamContent(stream));
using (HttpContent content = response.Result.Content)
{
string data = content.ReadAsStringAsync().Result;
}
}
}
更新
共有三种校验和和两组校验和组。
"checksums" : {
"sha1" : "94332c090bdcdd87bd86426c224bcc7dc1c5f784",
"md5" : "dcada413214a5bd7164c6961863f5111",
"sha256" : "049c671f48e94c1ad25500f64e4879312cae70f489edc21313334b3f77b631e6"
},
"originalChecksums" : {
"sha1" : "94332c090bdcdd87bd86426c224bcc7dc1c5f784",
"md5" : "dcada413214a5bd7164c6961863f5111"
}
checksums - 由 Artifactory 计算originalChecksums - 是上传者提供的
当我使用 API 时,originalChecksums 组是空的,我认为它会呈现上面的消息。
【问题讨论】:
-
我认为校验和是 sha256。在以下网页中搜索校验和:jfrog.com/confluence/display/RTF/Artifactory+REST+API
-
我已经更新了我的问题。 sha256 是人工制品可以生成的。我认为这里的问题是空的
originalChecksums。 -
再次查看网页。您需要发布:POST /api/checksum/sha256 -H "Content-Type: application/json"。因此,将您的对象流发送到帖子,该帖子将在您上传流之前返回 sha256 校验和。
-
我不确定您在最后一条评论中的意思。您引用的函数将对已上传到工件的文件计算 sha256。我已经在我的文件上尝试过,但它并没有解决 md5 和 sha1 校验和的问题。
-
您必须在发送流之前将 sha256 crc 添加到校验和组。否则,您会收到警告消息。因此,要么您必须忽略警告,要么添加 sha256。要添加 SHA crc,您需要在我发布的网页上发送另一篇文章。
标签: c# artifactory dotnet-httpclient