[英]REST API is not downloading file from AZURE git branch
我是 C# 的新手,正在尝试从 azure git 存储库下载文件。 响应状态为成功但未将文件下载到本地驱动器。 我正确地传递了所有参数。
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(
new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
Convert.ToBase64String(
System.Text.ASCIIEncoding.ASCII.GetBytes(
string.Format("{0}:{1}", "", personalaccesstoken))));
using (HttpResponseMessage response = client.GetAsync(
$"https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/items?path={path}&download={download}&versionDescriptor.versionType={versionDescriptor_versionType}&versionDescriptor.version={versionDescriptor_version}&api-version=7.0").Result)
{
response.EnsureSuccessStatusCode();
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
和我得到的 output 如下。
{
"objectId": "34e9cd84219e51533b19b3a70121e73b612c0eca",
"gitObjectType": "blob",
"commitId": "1916fd237ce345505a0cdbb285ce0ba71a64691b",
"path": "/Backend/DATA/Document_AA083_A100001.xml",
"url": "https://dev.azure.com/xxxx-xxx-xxx/00e7c28c-efde-450e-91a1-133b7f2a228c/_apis/git/repositories/062ef079-ab27-4ed9-ba91-aaa0678d89b5/items?path=%2FBackend%2FDATA%2FDocument_AA083_A100001.xml&versionType=Branch&version=tcs00107%2FGIT_Tool&versionOptions=None",
"_links": {
"self": {
"href": "https://dev.azure.com/xxxx-xxx-xxx/00e7c28c-efde-450e-91a1-133b7f2a228c/_apis/git/repositories/062ef079-ab27-4ed9-ba91-aaa0678d89b5/items?path=%2FBackend%2FDATA%2FDocument_AA083_A100001.xml&versionType=Branch&version=tcs00107%2FGIT_Tool&versionOptions=None"
},
"repository": {
"href": "https://dev.azure.com/xxxx-xxx-xxx/00e7c28c-efde-450e-91a1-133b7f2a228c/_apis/git/repositories/062ef079-ab27-4ed9-ba91-aaa0678d89b5"
},
"blob": {
"href": "https://dev.azure.com/xxxx-xxx-xxx/00e7c28c-efde-450e-91a1-133b7f2a228c/_apis/git/repositories/062ef079-ab27-4ed9-ba91-aaa0678d89b5/blobs/34e9cd84219e51533b19b3a70121e73b612c0eca"
}
}
}
如果有人可以帮助我解决这个问题,那将非常有帮助。 非常感谢您的帮助。
问题是您收到的 JSON 响应包含有关文件的元数据。 您必须使用“url”并使用“HttpClient.GetByteArrayAsync()”执行另一个获取请求。 这会将文件作为字节数组获取,然后可以使用“File.WriteAllBytes(string, byte[])”将其写入本地驱动器。
using (HttpClient client = new HttpClient())
{
//.. your existing code
var responseBody = await response.Content.ReadAsStringAsync();
dynamic jsonData = JsonConvert.DeserializeObject(responseBody);
var blobUrl = jsonData._links.blob.href;
byte[] fileBytes = await client.GetByteArrayAsync(blobUrl);
File.WriteAllBytes("path/to/local/file", fileBytes);
}
将路径更改为您希望保存文件的位置,并注意文件路径的任何权限/限制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.