【问题标题】:jira rest-api attach file to issue using powershelljira rest-api 附加文件以使用 powershell 发出
【发布时间】:2020-06-02 13:14:49
【问题描述】:

我想将文件附加到 jira 问题上,我可以使用邮递员来完成,但尝试了几种方法都没有突破。 我的代码是这样的

function ConvertTo-Base64($string) {
$bytes  = [System.Text.Encoding]::UTF8.GetBytes($string);
$encoded = [System.Convert]::ToBase64String($bytes);
return $encoded;
}

function Get-HttpBasicHeader([string]$username, [string]$password, $Headers = @{}) {
    $b64 = ConvertTo-Base64 "$($username):$($Password)"
    $Headers["Authorization"] = "Basic $b64"
    $Headers["X-Atlassian-Token"] = "nocheck"
return $Headers
}



$restapiuri = "https://xxxx.xxxx.com/rest/api//2/issue/test-8442/attachments"
$headers = Get-HttpBasicHeader "xxxxxx" "xxxxxxxx"


$myfile = "C:\TEMP\out.txt"
$fileBytes = [System.IO.File]::ReadAllBytes($myfile);
$fileEnc = [System.Text.Encoding]::GetEncoding('UTF-8').GetString($fileBytes);
$boundary = [guid]::NewGuid().ToString()
$LF = "`r`n";



$body = '(
            "--$boundary",
            "Content-Disposition: form-data; name=`"fil`"; filename=`"out.txt`"",
            "Content-Type: application/octet-stream$LF",
            $fileEnc,
            "--$boundary--$LF"
           ) -join $LF

 '


Invoke-RestMethod -uri $restapiuri  -Headers $headers  -Method POST -ContentType "multipart/form-data; boundary=`"$boundary`"" -Body $body

在邮递员中,我正在发送一个帖子请求 授权 基本认证 标题 标头 X-Atlassian-Token = o-check 内容类型 = 多部分/表单数据 身体形态数据 核心价值 文件文件路径

powershell 不返回任何错误,但也不附加任何文件 我已经尝试了几个没有运气的例子,所以如果你们中的任何人有任何想法必须在 powershell 中执行此操作,我会很高兴。

我使用的是 powershell 版本

主要次要版本修订


5 1 14409 1018

【问题讨论】:

  • URL 以$restapiuri = 开头的行看起来很奇怪,请注意2 附近的双倍//api//2/issue/
  • 谢谢,我更正了,但它仍然没有上传任何文件

标签: powershell jira-rest-api


【解决方案1】:

我发现以下看起来很适合这种情况。

function Upload-JiraFile($jiraTicket, $filepath, $authorization)
{
    $wc = new-object System.Net.WebClient
    $wc.Headers.Add("Authorization", $authorization)
    $wc.Headers.Add("X-Atlassian-Token", "nocheck") 
    $wc.UploadFile("$URIPath/issue/$jiraTicket/attachments", $filepath)
}

您可以通过以下方式使用它,只需对您现在拥有的代码进行最少的修改:

$URIPath = "https://xxxx.xxxx.com/rest/api/2"
Upload-JiraFile -JiraTicket test-8442 -FilePath c:\temp\MyJpg.jpg `
   -Authorization $Headers["Authorization"]

摘录from this thread.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多