2016-11-03 3 views
0

Je travaille sur la fixation des fichiers via PHP à la confluence (version 5.9.10)Comment joindre des fichiers à la page Atlassian Confluence en utilisant PHP

Voici mon code

$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); 

Mais après l'exécution du script I « ai erreur suivante: >

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"

Ce que je fais mal? Qu'ai-je manqué?

+0

S'il y a un moyen de fournir le nom (qualifié, de préférence) de la méthode où cette curs, même les (premiers niveaux de la) trace de la pile, s'il vous plaît faites-le. – greybeard

+0

@greybeard, oui, bien sûr, la description de la tâche a été mise à jour –

+0

Les gars, des mises à jour? –

Répondre

0

Essayez ceci:

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

Si le nom du fichier est nécessaire, vous pouvez essayer ceci:

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

j'ai rencontré cette erreur quand j'utilisais la lib cURL et le faisais vieux ainsi, comme:

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

]

Mais comme il est dépréciée de PHP 5.5, vous devez utiliser la nouvelle façon:

façon Impératif:

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

]

chemin de l'objet:

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

]