2017-06-06 2 views
0

jiraの問題に添付ファイルをアップロードする方法の例がいくつか見つかりましたが、いずれも動作させることはできませんでした。私はこの質問をJiraコミュニティーヘルプフォーラムに掲載しましたが、回答が1週間以上あり、ここのコミュニティが助けてくれることを願っています。JiraはPHPとCURLで発行するファイルを添付します

$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は、このファイルと同じディレクトリにあります。

は、ここに私の現在の試みです。私は、このページを実行すると、それが表示さ...ちょうどカントはattahcmentsをアップロードするように見える、

をカール、これがホストされているWebサーバにインストールしていないのJIRA罰金で問題を作成することができます。

string(0) "" 

ませ添付ファイルがされ言うまでもなくアップロードされた。私が間違っていることは何ですか?

EDIT:

  1. 「コンテンツを削除する@ testing.txtとtesting.txt
  2. の両方を試しNOCHECKとNOCHECK
  3. の両方を試して:私は試してみましたいくつかのものはここに、恵みをしているの追加-Type:マルチパート/フォームデータ」など
  4. フルパス:$data = array('file'=>"@C:\xampp\htdocs\Website\testing.txt ,'filename'=>'testing.txt');
  5. が原因で知らカール誤差があまりにこのような試み:$data = array('file'=>"@C:\xampp\htdocs\Website\testing.txt" ';filename=testing.txt');

そして上記のすべての組み合わせ。私が何を試しても、それはうまくいかない。また、Jiraの管理者レベルのユーザーであることを確認しました。私のコードはうまくいくはずだが...明らかにそうではない。

+0

'file'の名前を' file_contents'に変更できますか? '$ data = array( 'file_contents' =>" testing.txt ");'? – grundic

+0

@grundic Done。出力が次のように変更されました:string(2) "[]"ファイルがまだアップロードされていません。 – Lain

+0

[こちらはこちら](https://confluence.atlassian.com/jirakb/how-to-attach-an-attachment-in-a-jira-issue-using-rest-api-699957734.html)標準の例cUrlですが、これまでのところ違いはありません。ああ、 'multipart/form-data'はAtlassianの例ではありません。 – grundic

答えて

0

私の最初の仮定が間違っていた:それはNOCHECKNOCHECKの両方で動作します - それは重要ではありません。

$cfile = curl_file_create('testing.txt'); 

をそして配列にそれを置く:

代わりfileのためのパラメータとしてファイル名を置くのは、最初に、このようにカールファイルオブジェクトを作成している。ここで

$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); 
?> 
+0

違いはありません。ノーチェックとノーチェックの両方は何もしません。前に両方を試していた。 – Lain

+0

これは間違いなく 'no-check'でなければなりません。それは他の何かであるかもしれない。 – grundic

+0

私を助けてくれてありがとう。それは私の側で本当の痛みでした。チェックなしとnocheckの両方のためにtesting.txtの前に@記号を置こうとしました。ちょうど私が私のポストでそれを言及しなかったので。 – Lain

関連する問題