Добавление вложения в API Jira

Я пытаюсь прикрепить файл к делу Jira, используя их API. Я делаю это в Drupal 6 (PHP v.5.0). Вот код, который у меня есть:

$ch = curl_init();
$header = array(
'Content-Type: multipart/form-data',
'X-Atlassian-Token: no-check'
);
$attachmentPath = $this->get_file_uploads();
//$attachmentPath comes out to be something like:
//http://localhost/mySite/web/system/files/my_folder/DSC_0344_3.JPG

$data = array('file'=>"@". $attachmentPath, 'filename'=>'test.png');
$url= 'https://mysite.atlassian.net/rest/api/2/issue/20612/attachments/';

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->get_jira_headers());
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch,  CURLOPT_POSTFIELDS ,$data);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, "myusername:mypassword");

$result = curl_exec($ch);
$ch_error = curl_error($ch);

Проблема в том, что $ result получается ложным, а $ ch_error утверждает, что не смог открыть файл. Эта ошибка имеет какое-то отношение к Drupal или как к тому, как я отправляю свой запрос Jira? Кстати, если я использую абсолютный путь, хотя, как это:

$attachmentPath = 'C:\wamp\www\mySite\web\sites\mySite.net\files\my_folder\DSC_0333.JPG';

Загрузка работает просто отлично.

4

Решение

Это должно работать для вас:

$data = array('file'=>"@". $attachmentPath . ';filename=test.png');

Это была ошибка с CURL PHP <5.2.10, вы можете увидеть это в трекере ошибок PHP: https://bugs.php.net/bug.php?id=48962 (И в комментариях вы видите, что это было исправлено)

И если вы используете PHP 5.5.0+, вы можете использовать это:

$cfile = new CURLFile($attachmentPath);
$cfile->setPostFilename('test.png');
$data = array('file'=>$cfile);

Вы также можете увидеть это в комментарии JIRA: JIRA Комментарий

Также я думаю, что вы хотите изменить это:

curl_setopt($ch, CURLOPT_HTTPHEADER, $this->get_jira_headers());

к этому:

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]