У меня есть эта форма для загрузки файла. Я хочу, чтобы он был загружен как комментарий в Pivotal Tracker с помощью API. Что я напишу в коде? Я новичок в керле.
Редактировать: В Pivotal Tracker вы можете загружать файлы .jpg, .xls и т. Д. В комментарии, и он создает загружаемый значок / эскиз.
Комментарии док: https://www.pivotaltracker.com/help/api/rest/v5#projects_project_id_stories_story_id_comments_post
Файл вложения Док:
https://www.pivotaltracker.com/help/api/rest/v5#file_attachment_resource
upload.html:
<form action="pt.php" method="post" enctype="multipart/form-data">
<fieldset>
<input type="file" name="pt_xls" />
<input type="submit" name="upload" value="Upload" />
</fieldset>
</form>
pt.php:
$response = pivotalTracker("https://www.pivotaltracker.com/services/v5/projects/XXXXXXXX/stories/XXXXXXXX/comments");
$resArr = array();
$resArr = json_decode($response);
echo "<pre>"; print_r($resArr); echo "</pre>";
function pivotalTracker($url) {$pivotalAPIToken = 'XXXXXXXXXX';
$curlHeader = array("X-TrackerToken: ".$pivotalAPIToken, "Content-type: application/json");
$options = array(
CURLOPT_HTTPHEADER => $curlHeader,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => json_encode($data),
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
curl_close($ch);
return $content;
}
Возможно, это не правильный путь, но это работает!
file_in.php
if(isset($_FILES['file'])){
$errors= array();
$theFile = $_FILES['file'];
$file_name = $_FILES['file']['name'];
$file_size = $_FILES['file']['size'];
$file_tmp = $_FILES['file']['tmp_name'];
$file_type = $_FILES['file']['type'];
move_uploaded_file($file_tmp, $_SERVER['DOCUMENT_ROOT']."/pt_uploads/".$file_name);
}
$target_file = $_SERVER['DOCUMENT_ROOT']."/pt_uploads/".$file_name;
$response = pivotalTracker("https://www.pivotaltracker.com/services/v5/projects/*ID*/uploads", $file_name, $target_file, $file_type);function pivotalTracker($url, $file_name, $target_file, $file_type) {
$pivotalAPIToken = 'XXXXXXXX';
$curlHeader = array("X-TrackerToken: ".$pivotalAPIToken, "Content-type: multipart/form-data", "Content-Disposition: form-data;'");$cfile = curl_file_create('../pt_uploads/'.$file_name,$file_type,$file_name);
$data = array('file' => $cfile);
$options = array(
CURLOPT_HTTPHEADER => $curlHeader,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_BINARYTRANSFER => true,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => $data,
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
curl_close($ch);
unlink($target_file);
$resArr = array();
$resArr = json_decode($content);
$theId = $resArr->id;
$theName = $resArr->filename;header('Location: pt_file_comment.php?pt_file_id='.$theId.'&filename='.$theName);
}
pt_file_comment.php
$pt_file_id = $_GET['pt_file_id'];
$pt_file_name = $_GET['filename'];
$response = pivotalTracker("https://www.pivotaltracker.com/services/v5/projects/*ID*/stories/*ID*/comments", $pt_file_id, $pt_file_name);
$resArr = array();
$resArr = json_decode($response);
echo "<pre>"; print_r($resArr); echo "</pre>";
function pivotalTracker($url, $pt_file_id, $pt_file_name) {
$file_data[] = array('id' => $pt_file_id,);
$fileObject = (object) $file_data;$data = array(
'text' => 'file_attachments/'.$pt_file_id.'/'.$pt_file_name,
'file_attachments' => $file_data,
);
$pivotalAPIToken = 'XXXX';
$curlHeader = array("X-TrackerToken: ".$pivotalAPIToken, "Content-type: application/json");
$options = array(
CURLOPT_HTTPHEADER => $curlHeader,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => json_encode($data),
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
curl_close($ch);
return $content;
}
Других решений пока нет …