api - 将文件附加到 Azure DevOps 工作项
问题描述
我正在尝试通过 C# 桌面应用程序将文件(屏幕截图)附加到 Azure DevOps 工作项。我设法附加了文件,但它们不是有效的图像文件,这让我相信我在上传它们时做错了。
下面的文档DevOps Create Attachment是 API 调用的请求正文部分,相当模糊。
从GitHub 讨论来看,这个答案似乎表明我只是直接上传二进制内容,这就是我正在做的事情。
我的代码如下
var img = File.ReadAllBytes(fname);
string query = @"/_apis/wit/attachments?fileName=" + fname + @"&api-version=6.0"
string response = AzureUtils.AttachFile(query, img, "POST", false, "application/octet-stream");
我从文件(变量img)中读取的字节数组作为正文从字面上传递是否正确?
为什么我在 DevOps 中查看它时它不是一个有效文件?
AttachFile 的代码是
public static string AttachFile(string query, byte[] data = null, string method = "GET",
bool dontUseBaseURL = false, string contentType = "application/json-patch+json")
{
try
{
HttpWebRequest request = WebRequest.Create(query) as HttpWebRequest;
request.ContentType = contentType;
request.Method = method;
request.Proxy.Credentials = CredentialCache.DefaultCredentials;
request.Headers.Add("Authorization", "Basic " +
Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{1}", ["AzurePAT"]))));
if (data != null)
{
using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(data);
}
}
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
string result = string.Empty;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
result = reader.ReadToEnd();
}
request = null;
response = null;
return result;
}
解决方案
推荐阅读
- sql - 当列非常大时,如何在oracle中删除表中的许多列?
- sql - 给定日期和sql中的公共值,从查询中提取行数据
- python - 无法导入熊猫:ImportError: cannot import name 'ops'
- twitter - 如何通过 Firefox 插件使用 twitter 进行身份验证
- azure - 如何推迟/安排从服务总线接收消息的重试策略?
- python-3.7 - 如何从python数组中删除括号?
- html - 是否有关于网页中的位置是否是放置光标以进行文本编辑的有效位置的规范?
- excel - 将 Excel 转换为 Google 表格并替换
- mongodb - Mongo 计数所有集合文档中出现的数组项
- python - python OOT模块中的GNURadio回调