【发布时间】:2016-05-14 02:55:57
【问题描述】:
我尝试在 Alfresco Enterprise 4 中上传 PDF 文件。我的 PHP 调用 curl 操作:
$curl_request = curl_init();
curl_setopt($curl_request, CURLOPT_URL, 'http://myalfresco:80/alfresco/service/api/upload?alf_ticket=TICKET_1c75b3391fc2b8a60a1ab92dd1xxx');
curl_setopt($curl_request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_request, CURLOPT_HEADER, false);
curl_setopt($curl_request, CURLOPT_POST,true);
curl_setopt($curl_request, CURLOPT_POSTFIELDS,array('filedata'=>'@/var/tmp/QDL_Attrib_29.pdf','destination'=>'workspace://SpacesStore/71a79d5f-326d-4671-8fee-5ffef2540e2d'));
$result = curl_exec($curl_request);
我得到了这个错误:
“状态”:{ “代码”:400, "name" : "错误请求", "description" : "客户端发送的请求语法错误。" },
"message" : "缺少必需的参数"
如果我尝试在命令行中直接在 curl 中运行我的调用,就像这样,它可以工作...我不明白我的问题...
curl -v -X POST -F 文件数据=@/var/tmp/QDL_Attrib_29.pdf -F 目的地=工作区://SpacesStore/71a79d5f-326d-4671-8fee-5ffef2540e2d http://myalfresco:80/alfresco/service/api/upload?alf_ticket=TICKET_1c75b3391fc2b8a60a1ab92dd1xxx
如果我在命令行中显示 curl 的标题:
POST /alfresco/service/api/upload?alf_ticket=TICKET_1c75b3391fc2b8a60a1ab92dd1xxx HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: myalfresco
> Accept: */*
> Content-Length: **29447**
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------530a6362a7da
在 PHP 中:
POST /alfresco/service/api/upload?alf_ticket=TICKET_1c75b3391fc2b8a60a1ab92dd1xxx HTTP/1.1
Host: myalfresco
Accept: */*
Content-Length: **339**
Expect: 100-continue
Content-Type: multipart/form-data; boundary=----------------------------362fa1523053
这意味着curl可以通过PHP方法获取文件...
【问题讨论】: