1

我一直在使用 Jira API,并且看到我的请求结果不一致。有时它有效,有时则无效。上周我可以将附件发布到问题上,但现在出现了一个老问题:附件名称包含发布文件的整个路径,因此无法打开附件。我使用 json 表示来发布文件:

$array = array("file"=>"@filename");
json_encode($array);
...

这会发布文件,但问题是当它发布时,JIRA 中的文件名是这样的:

/var/www/user/text.text

不用说它不能在 JIRA 中打开。我之前也有这个问题,后来突然消失了,现在又出现了。我真的不明白。顺便说一句,即使文档中可能会推荐它,我也没有为此请求使用 curl。

4

2 回答 2

1

我意识到这个问题有点老了,但我遇到了类似的问题。似乎 Jira 不一定按预期修剪文件名。我能够用以下方法修复它。如果您使用的是 PHP >= 5.5.0:

$url = "http://example.com/jira/rest/api/2/issue/123456/attachments";
$headers = array("X-Atlassian-Token: nocheck");

$attachmentPath = "/full/path/to/file";
$filename = array_pop(explode('/', $attachmentPath));

$cfile = new CURLFile($attachmentPath);
$cfile->setPostFilename($filename);

$data = array('file'=>$cfile);

$ch = curl_init();

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$result = curl_exec($ch);

$ch_error = curl_error($ch);

if ($ch_error){
    echo "cURL Error: $ch_error"; exit();
} else {
    print_r($result);
}

对于 PHP <5.5.0 但 > 5.2.10(请参阅此错误):

$data = array('file'=>"@{$attachmentPath};filename={$filename}");
于 2014-04-03T16:55:28.430 回答
0

是的,我在https://jira.atlassian.com/browse/JRA-30765上提出了一个问题, 遗憾的是,通过 REST 添加附件到 JIRA 并没有它可能有用。

有趣的是问题消失了 - 也许您是从不同的位置运行脚本?

于 2013-08-26T20:30:33.463 回答