2016-11-03 12 views
0

Я работаю на прикрепление файлов с помощью PHP до слияния (версия 5.9.10)Как прикрепить файлы к Atlassian Confluence страницы с помощью PHP

Вот мой код

$ch=curl_init(); 
$headers = array(
    'X-Atlassian-Token: no-check' 
); 
$data = array('file' => '@test.txt'); 
curl_setopt_array(
    $ch, 
    array(
     CURLOPT_URL=>'https://<path_to_confluence>/rest/api/content/<page_id>/child/attachment', 
     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=>C_USERNAME.":".C_PASSWORD 
    ) 
); 
$result=curl_exec($ch); 
$ch_error = curl_error($ch); 
if ($ch_error) { 
    echo "cURL Error: $ch_error"; 
} else { 
    var_dump($result); 
} 
curl_close($ch); 

Но после запуска сценария I «ве следующая ошибка: >

HTTP/1.1 500 Internal Server Error
Server: nginx/1.5.12
Date: Thu, 03 Nov 2016 10:12:44 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
X-ASEN: SEN-2160053
Set-Cookie: JSESSIONID=EE3116DFC552C7D4571608BFCF410559; Path=/; HttpOnly
X-Seraph-LoginReason: OK
X-AUSERNAME: user
Cache-Control: no-cache, must-revalidate
Expires: Thu, 01 Jan 1970 00:00:00 GMT
X-Content-Type-Options: nosniff
HTTP error before end of send, stop sending
Closing connection 0 string(93) "statusCode":500,"message":"java.lang.IllegalArgumentException:File name must not be null"

Что я делаю не так? Что я пропустил?

+0

Если есть способ предоставить (квалифицированное, предпочтительно) имя метода, в котором этот oc пожалуйста, сделайте это, даже (первые несколько уровней) трассировки стека. – greybeard

+0

@greybeard, да, конечно, описание задачи обновлено –

+0

Ребята, все обновления? –

ответ

0

Попробуйте это:

$data = array('file' => '@' . realpath('test.txt')); 
... 
CURLOPT_POSTFIELDS=>$data 

Если требуется имя файла, вы можете попробовать это вместо:

$data = array('file' => '@' . realpath('test.txt') . ';filename=test.txt')); 
... 
CURLOPT_POSTFIELDS=>$data 
0

я встретил эту ошибку, когда я с помощью Lib скручиваются и делал это старое Кстати, как:

CURLOPT_POSTFIELDS => [ 
     'file' => '@/pathToFile' 

]

Но так как он устарел с PHP 5.5, вы должны использовать его новый путь:

императив путь:

CURLOPT_POSTFIELDS => [ 
     'file' => curl_file_create($filePath) 

]

путь объекта:

CURLOPT_POSTFIELDS => [ 
     'file' => new CurlFile($filePath) 

]