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

Jira附加文件以解决PHP和CURL的问题

柳俊健
2023-03-14

我在jira中找到了几个关于如何上传一个问题附件的例子,但是我无法让其中任何一个起作用。我在Jira社区帮助论坛上发布了这个问题,但已经一周多了,没有回复,所以希望这里的社区能提供帮助。

以下是我目前的尝试:

 $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);

测试。txt与此文件位于同一目录中。我已经在网站服务器上安装了curl,可以在jira中创建问题,只是无法上传附件。。。

当我运行这个页面时,它会显示:

string(0) "" 

不用说,也没有附件上传。有什么想法我做错了吗?

编辑:添加悬赏,以下是我尝试过的一些事情:

  1. 尝试不检查和不检查
  2. 尝试两种测试。txt和测试。txt
  3. 删除“内容类型:多部分/表单数据”
  4. 完整路径如下:$data=array('file'=

以及以上的每一个组合。不管我怎么尝试,它都不起作用。还确保我是Jira的管理员级用户。我觉得我的代码应该有用。。。但显然不是。


共有1个答案

董胡媚
2023-03-14

我最初的假设是错误的:它适用于no-check和nocheck——没关系。

不要将文件名作为file的参数,而是先创建一个curl file对象,如下所示:

$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);
?>
 类似资料:
  • 我可以通过Jira Rest Api附加一个图像,但当我试图通过它发送多个图像时,它失败了。这是我的单附件代码。需要帮助才能使多个附件正常工作。 参考:Jira附加文件,用于PHP和CURL

  • 我想通过s在JIRA中创建一个问题。 我的问题是,如何发送(base64)图像并请求新的JIRA? 是否有任何参数,如其他字段(摘要,描述)或其他方式来发送编码图像? 我对jQuery函数的请求如下: 发送Encoded(base64格式的图像)和此请求是否可行?

  • 我正在尝试使用最新的REST API发布JIRA的附件。这是我的代码: 然而,我得到了以下回应: 我的本地JIRA实例中确实存在密钥TEST-2问题,我可以在JIRA应用程序中“手动”添加附件。我知道我必须添加一个类型为“X-Atlassian-Token:nocheck”的头来防止XSRF,但是,从输出来看,我一定是做错了什么。。更让我困惑的是,在XSRF检查失败后抛出了404。 我在谷歌上搜索

  • 问题内容: 有人可以帮我弄清楚为什么它总是返回假吗? 问题答案: 我所做的: 将主体与标题分离 删除了放在分隔符之前的多余EOL

  • 我使用下面的代码将pdf文件附加到邮件(JAVAMAIL)中。这个位置工作完美,并添加附件到我的邮件,但这邮件没有任何正文。 当我将下面的行添加到我的代码中时,它会删除附件并发送给我只包含文本的邮件。 请帮助我添加附件和测试体到我的邮件。

  • 问题内容: 我正在尝试使用最新的REST API发布JIRA附件。这是我的代码: 但是,我得到以下回应: 我的本地JIRA实例中确实存在密钥TEST-2的问题,我可以在Jira应用程序本身中“手动”添加附件。我知道我必须添加类型为“ X-Atlassian- Token:nocheck”的标头以防止XSRF,但是从输出来看,我必须做错了什么。令我更加困惑的是,在XSRF检查失败。 我已经在Goog