2014-11-10 7 views
2

PHP로 기존 Jira 문제에 파일을 첨부하는 스크립트를 작성하고 있습니다. 스크립트를 실행할 때 빈 배열이 반환됩니다. 나는 내 코드에 어떤 문제가 있는지 궁금 :Jira REST API를 사용한 파일 첨부는 빈 배열을 반환합니다.

$cfile = curl_file_create($_SERVER['DOCUMENT_ROOT'].'/test.png','image/png','test.png'); 

$data1 = array('test.png' => $cfile); 

$url1 = 'http://myserver.com/rest/api/2/issue/TP-55/attachments'; 
$ch1 = curl_init(); 
$headers1 = array(
    'Content-Type: multipart/form-data', 
    'X-Atlassian-Token: nocheck' 
); 

curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch1, CURLOPT_VERBOSE, 1); 
curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch1, CURLOPT_HTTPHEADER, $headers1); 
curl_setopt($ch1, CURLOPT_CUSTOMREQUEST, "POST"); 

curl_setopt($ch1, CURLOPT_SAFE_UPLOAD, 1); 
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, 1); 

curl_setopt($ch1, CURLOPT_POSTFIELDS, $data1); 
curl_setopt($ch1, CURLOPT_URL, $url1); 

$username = 'myusername'; 
$password = 'mypassword'; 
curl_setopt($ch1, CURLOPT_USERPWD, "$username:$password"); 

$result1 = curl_exec($ch1); 
$ch_error1 = curl_error($ch1); 


if ($ch_error1) { 
    echo "cURL Error: $ch_error1"; 
} else { 
    echo $result1; 
} 

curl_close($ch1); 

을 그냥 서버에 이미 테스트 파일을 업로드하려고 시도하고이 코드와 함께. 성공적인 파일 업로드를 완료하려면 무엇을 변경해야합니까?

+0

열기 직후 파일 상단에 오류보고를 추가하십시오. '

+0

상단에 이미 해당 행이 있습니다. PHP가 오류를 표시하지 않습니다. – beatsforthemind

답변

1

문제에 하나 이상의 첨부 파일을 추가하십시오. 이 리소스는 멀티 파트 게시물을 필요로합니다. media-type multipart/form-data는 RFC 1867에 정의되어 있습니다. 대부분의 클라이언트 라이브러리에는 다중 게시물을 쉽게 처리 할 수있는 클래스가 있습니다. 예를 들어, Java에서 Apache HTTP Components 라이브러리는 다중 파트 POST를 제출하기 쉽게하는 MultiPartEntity를 제공합니다. XSRF 공격으로부터 보호하기 위해이 방법은 multipart/form-data를 허용하기 때문에 XSRF 공격으로부터 보호됩니다. 즉, X-Atlassian-Token의 헤더를 제출해야합니다 : 요청과 함께 nocheck하십시오. 그렇지 않으면 요청이 차단됩니다. 첨부 파일이 들어있는 multipart/form-data 매개 변수의 이름은 "file"이어야합니다. "myfile.txt"라는 파일을 업로드하여 REST-123을 발행하는 간단한 예입니다. curl -D- -u admin : admin - X POST -H "X-Atlassian-Token : nocheck"-F "[email protected]".../rest/api/2/issue/TEST-123/첨부 파일

그래서 전송하는 데이터는 필드 이름 file [email protected]가 들어 있습니다. 위 예제를 참조하십시오.