Я нашел несколько примеров того, как загрузить вложение к проблеме в jira, однако я не смог заставить ни один из них работать. Я разместил этот вопрос на справочных форумах сообщества Jira, но прошло уже больше недели с 0 ответами, поэтому я надеюсь, что сообщество может помочь.
Вот моя текущая попытка:
$Jirausername = 'myUsername';
$Jirapassword = 'myPassword';
$ch=curl_init();
$headers = array(
'X-Atlassian-Token: nocheck',
'Content-Type: multipart/form-data'
);
$data = array('file' => "testing.txt");curl_setopt_array(
$ch,
array(
CURLOPT_URL=>'https://myCompany.net/rest/api/latest/issue/TAG-78/attachments',
CURLOPT_POST=>true,
CURLOPT_VERBOSE=>1,
CURLOPT_POSTFIELDS=>$data,
CURLOPT_SSL_VERIFYHOST=> 0,
CURLOPT_SSL_VERIFYPEER=> 0,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_HEADER=>false,
CURLOPT_HTTPHEADER=> $headers,
CURLOPT_USERPWD=>"$Jirausername:$Jirapassword")
);
$result=curl_exec($ch);
$ch_error = curl_error($ch);
if ($ch_error) {
echo "cURL Error: $ch_error";
} else {
var_dump($result);
}
curl_close($ch);
testing.txt находится в том же каталоге, что и этот файл. У меня есть curl, установленный на веб-сервере, где он находится, может создавать проблемы в jira нормально, просто не могу загрузить вложения …
Когда я запускаю эту страницу, она отображает:
string(0) ""
Нет необходимости загружать прикрепленные файлы. Есть идеи, что я делаю не так?
РЕДАКТИРОВАТЬ: Добавление щедрости, вот несколько вещей, которые я пытался:
$data = array('file'=>"@C:\xampp\htdocs\Website\testing.txt ,'filename'=>'testing.txt');
$data = array('file'=>"@C:\xampp\htdocs\Website\testing.txt" ';filename=testing.txt');
И каждая комбинация вышеперечисленных. Независимо от того, что я пытаюсь это не работает, хотя. Также я гарантированно являюсь пользователем уровня администратора в Jira. Я чувствую, что мой код должен работать … но явно нет.
Мое первоначальное предположение было неверным: оно работает с обоими нет проверка а также NOCHECK — это не важно
Вместо ввода имени файла в качестве параметра для file
Вы сначала создаете объект файла curl следующим образом:
$cfile = curl_file_create('testing.txt');
И затем поместите это в массив:
$data = array('file' => $cfile);
Вот полное решение, которое сработало для меня:
<?php
$Jirausername = '<username>';
$Jirapassword = '<password>';
$ch=curl_init();
$headers = array(
'X-Atlassian-Token: nocheck',
'Content-Type: multipart/form-data'
);$cfile = curl_file_create('testing.txt');
$data = array('file' => $cfile);curl_setopt_array(
$ch,
array(
CURLOPT_URL=>'https://<JIRA-SERVER>/rest/api/latest/issue/<ISSUE-KEY>/attachments',
CURLOPT_POST=>true,
CURLOPT_VERBOSE=>1,
CURLOPT_POSTFIELDS=>$data,
CURLOPT_INFILESIZE => 5,
CURLOPT_SSL_VERIFYHOST=> 0,
CURLOPT_SSL_VERIFYPEER=> 0,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_HEADER=>true,
CURLOPT_HTTPHEADER=> $headers,
CURLOPT_USERPWD=>"$Jirausername:$Jirapassword")
);
$result=curl_exec($ch);
$ch_error = curl_error($ch);
if ($ch_error) {
echo "cURL Error: $ch_error";
} else {
var_dump($result);
}
curl_close($ch);
?>
Других решений пока нет …