当前位置: 首页 > 知识库问答 >
问题:

JIRA REST API如何使用c#添加附件

汪鸿志
2023-03-14

我使用jira api添加附件的问题

据留档说,我设置了一些东西。

>

包含附件的多部分/表单数据参数的名称必须为“file”。

资源需要一个多部门员额。

我的代码如下

string postUrl = "http://localhost:8080/rest/api/latest/issue/TES-99/attachments";
System.Net.Http.HttpClient client = new System.Net.Http.HttpClient(); 
client.DefaultRequestHeaders.Add("X-Atlassian-Token", "nocheck");
client.BaseAddress = new System.Uri(postUrl);
byte[] cred = UTF8Encoding.UTF8.GetBytes(credentials);
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(cred));
var content = new MultipartFormDataContent();
var values = new[]
{
    new KeyValuePair<string, string>("file", "e:\\z.txt")               
};
foreach (var keyValuePair in values)
{
    content.Add(new StringContent(keyValuePair.Value), keyValuePair.Key);
}
            
var result = client.PostAsync(postUrl, content).Result;

请指出我犯了什么错误

共有2个答案

子车俊哲
2023-03-14

这是我的工作代码。

   [HttpPost]
   public async Task<IActionResult> CreateTicketWithAttachent(IFormFile file, [FromQuery] string issuekey)
    {
        try
        {
            string url = $"http://jiraurl/rest/api/2/issue/{issuekey}/attachments";
            var client = new HttpClient();
            var header = new AuthenticationHeaderValue("Basic", "your-auth-key");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Authorization = header;
            client.DefaultRequestHeaders.Add("X-Atlassian-Token", "no-check");

            MultipartFormDataContent multiPartContent = new MultipartFormDataContent("-data-");

            ByteArrayContent byteArrayContent;
            using (var ms = new MemoryStream())
            {
                file.CopyTo(ms);
                var fileBytes = ms.ToArray();
                //string fileString = Convert.ToBase64String(fileBytes);
                byteArrayContent = new ByteArrayContent(fileBytes);
            }

            multiPartContent.Add(byteArrayContent, "file", file.FileName);

            var response = await client.PostAsync(url, multiPartContent);

            var result = response.Content.ReadAsStringAsync().Result;

            if (response.StatusCode != System.Net.HttpStatusCode.OK)
                throw new Exception(result);

            return Ok();
        }
        catch (Exception e)
        {
            return BadRequest(e);               
        }
    }
姜博
2023-03-14

我也解决了这个问题。现在我可以使用带有C#的JIRA API添加附件了。

我在这段代码上犯了错误。

var values = new[]
{
    new KeyValuePair<string, string>("file", "e:\\z.txt")               
};

foreach (var keyValuePair in values)
{
    content.Add(new StringContent(keyValuePair.Value), keyValuePair.Key);
}

这是我的密码。

string postUrl = "http://localhost:8080/rest/api/latest/issue/" + projKey + "/attachments";
      
System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();

client.DefaultRequestHeaders.Add("X-Atlassian-Token", "nocheck");
client.BaseAddress = new System.Uri(postUrl);
byte[] cred = UTF8Encoding.UTF8.GetBytes(credentials);
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(cred));
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));                                                     
MultipartFormDataContent content = new MultipartFormDataContent();

**//The code which solved the problem**  

HttpContent fileContent = new ByteArrayContent(File.ReadAllBytes(filePath));
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse(mimeType);
content.Add(fileContent, "file",fileName);
var result = client.PostAsync(postUrl, content).Result;
 类似资料:
  • 我们正在移植我们的产品。NET将代码从SOAP集合到其他程序。NET API。到目前为止,REST API似乎更快、更易于使用,因为在Rally工作区中,每次工作产品自定义字段发生更改时,都没有WSDL可以中断。 不过,当我们试图复制上传附件的能力时,我遇到了一个问题。我们遵循的程序与本文概述的程序非常相似: Rally SOAP API-如何向分层需求添加附件 将图像读入系统。绘画形象我们使用I

  • 我正在使用配置了@EnableHypermediaSupport(类型=HAL)的Spring Boot和Spring Hateoas。虽然这在基本场景中效果很好,但我希望能够向链接添加其他属性。例如,很容易返回将呈现以下链接的链接: 我想做的是向something rel中的对象添加更多属性。例如: 在不创建自己的DTO的情况下,最好的方法是什么(最好使用ControlllerLinkBuild

  • 我正在尝试使用这里提供的jirarestapihttps://developer.atlassian.com/server/jira/platform/rest-apis/我正试图弄清楚如何在我的项目中得到对具体问题的描述。 当我做以下查询时: curl-D--u user:password-X GET-H“内容类型:application/json”http://localhost/jira/r

  • 问题内容: 如何使用Javascript 添加CSS规则(例如)? 问题答案: 您也可以使用DOM Level 2 CSS接口(MDN)执行此操作: …(除了(自然地)IE8和更早版本以外的所有版本),它使用自己的边际差异措辞: 与createElement-set- innerHTML方法相比,此方法具有理论上的优势,因为您不必担心在innerHTML中放置特殊的HTML字符,但实际上,样式元素

  • 问题内容: 如何使用Dockerfile添加用户-以下内容不起作用。 我完整的Dockerfile: 问题答案: 使用而非交互来添加用户。 以下命令不会创建user。 它将使用用户 请参考Dockerfile用户文档 USER指令设置运行映像时使用的用户名或UID,以及Dockerfile中跟随该映像的所有RUN,CMD和ENTRYPOINT指令。 注意: 确保这是默认外壳程序。 如果使用默认外壳

  • 本文向大家介绍如何使用C#程序给PDF文件添加编辑域,包括了如何使用C#程序给PDF文件添加编辑域的使用技巧和注意事项,需要的朋友参考一下 PDF文档通常是不能编辑的,但有些时候需要在PDF文档中填写日期或签名之类,就需要在PDF有能编辑的文本域,本文介绍怎样用C#来实现这一功能。 环境 工具:VS2015 语言:C# 操作PDF类库:iTextSharp 5.5.10 生成的PDF预览的工具:S