jas*_*son 5 php curl jira jira-rest-api
我正在使用Jira的API将附件文件添加到案例中.我的问题是在我的代码附加了一个文件后,我转到JIRA案例进行确认,我看到了两件事.首先,如果是图像,我可以看到图像的缩略图.但是,如果我点击它,我会收到错误消息"无法加载请求的内容.请重试." 其次,在缩略图下,它没有显示文件的名称,而是具有文件最初上传的路径(id:c:/ wamp/www/...."这是否有原因发生?这里是我的代码:
$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:
//c:/wamp/www/mySite/web/system/files/my_folder/DSC_0344_3.JPG
$data = array('file'=>"@". $attachmentPath, 'filename'=>'DSC_0344_3.JPG');
$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, $header);
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);
Run Code Online (Sandbox Code Playgroud)
一旦文件被添加到Jira,当我登录jira时,我可以看到缩略图,但文件下的标题是:c:/wamp/www/mySite/web/system/files/my_folder/DSC_0344_3.JPG的文件名.
谢谢
你需要使用:
$data = array('file'=>"@". $attachmentPath . ';filename=DSC_0344_3.JPG');
Run Code Online (Sandbox Code Playgroud)
这是PHP cURL <5.5.0但是> 5.2.10中的问题,请参阅JIRA API附件名称包含已发布文件的完整路径
当使用PHP> = 5.5.0时,最好切换到该CURLFile链接中记录的方法.
$cfile = new CURLFile($attachmentPath);
$cfile->setPostFilename('DSC_0344_3.JPG');
$data = array('file'=>$cfile);
Run Code Online (Sandbox Code Playgroud)