我正在努力通过PHP将文件附加到confluence(版本5.9.10)
这是我的代码
$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);
但是在运行脚本之后我发生了下一个错误: &GT;
HTTP / 1.1 500内部服务器错误
服务器:nginx / 1.5.12
日期:2016年11月3日星期四10:12:44 GMT
内容类型:application / json
转移编码:分块
连接:保持活力
X-ASEN:SEN-2160053
Set-Cookie:JSESSIONID = EE3116DFC552C7D4571608BFCF410559;路径= /;仅Http
X-Seraph-LoginReason:好的 X-AUSERNAME:用户
缓存控制:无缓存,必须重新验证 到期日:1970年1月1日星期四00:00:00 GMT
X-Content-Type-Options:nosniff
发送结束前发生HTTP错误,停止发送
关闭连接0 string(93)“statusCode”:500,“message”:“java.lang.IllegalArgumentException:文件名不能为空”
我做错了什么?我错过了什么?
答案 0 :(得分:0)
试试这个:
$data = array('file' => '@' . realpath('test.txt'));
...
CURLOPT_POSTFIELDS=>$data
如果需要文件名,您可以尝试使用:
$data = array('file' => '@' . realpath('test.txt') . ';filename=test.txt'));
...
CURLOPT_POSTFIELDS=>$data
答案 1 :(得分:0)
我在使用lib cURL时遇到了这个错误,并且是以旧的方式进行的,例如:
CURLOPT_POSTFIELDS => [
'file' => '@/pathToFile'
但是由于它已经从PHP 5.5中弃用,你需要以新的方式使用它:
势在必行:
CURLOPT_POSTFIELDS => [
'file' => curl_file_create($filePath)
对象方式:
CURLOPT_POSTFIELDS => [
'file' => new CurlFile($filePath)