해당 REST API 중
/rest/api/2/issue/{issueIdOrKey}/attachments
위 명령어가 attachments 에 파일을 올리는 URL 입니다.그리고, 해당 URL을 사용하여 파일으 업데이트 하는 curl 소스는
curl -D- -u admin:admin -X POST -H "X-Atlassian-Token: nocheck" -F "file=@myfile.txt" http://myhost/rest/api/2/issue/TEST-123/attachments
이며, 위 코드의 각 옵션들을 llibCurl로 변경하면 소스 코드는 완성 됩니다.
-u 즉, User Admin 하는 코드는 CURLOPT_USERPWD 옵션을 사용하면 되고,
-X는 Post, Get 등 전송 방식을 선택하는 것이고, Post 방식임으로
CURLOPT_HTTPPOST 방식을 사용하면 됩니다.
-H 는 User가 정한 Header를 넣는 코드로
CURLOPT_HTTPHEADER 를 사용하면 됩니다.
자세한 사용 방법은 각 Option 을 구글링하면 나오게 됩니다.
그리고, -F는 파일을 업로드 하는 것으로 해당 포스팅이 되겠습니다.
한참 해맸던 문제는 코드 에러가 발생하지 않는데, 전송이 되지 않는 것이었습니다.
/* Fill in the file upload field */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "file",
CURLFORM_FILE, "abcd.jpg",
CURLFORM_END);
해당 코드가, 파일 업로드를 하는 필드입니다.
위 방식으로 하면 되는데, 이 때 주의점이
CURLFORM_COPYNAME 필드의 "file" 즉, 이 file 이
curl 명령어의 ""file = @myfile.txt"" 의 file 즉, filename 필드명을 적어 줘야 합니다.
COPYNAME 필드를 file이 아닌 다른 이름으로적으면 filename field를 찾지 못해
파일 전송이 되지 않는 것입니다.
참조 : http://parangbook.tistory.com/193 => filename file와 COPYNAME field 이름 통일을 알게 해준사이트
http://cboard.cprogramming.com/networking-device-communication/76842-file-upload-libcurl.html
=> file 전송에 대한 예시가 있는 사이트