我正在尝试通过vtiger 5.4 webservice创建一个附加文件的文档。
创建文档很简单,但我不清楚添加文件的过程。 这似乎是一个两步过程:
除非有直接的方式将文件与文档对象一起上传,但我找不到任何关于该主题的文档(除了基本的,准确的webservices文档)。
希望得到任何指针。 谢谢!
答案 0 :(得分:2)
您没有指定使用哪种语言,因此我会在此处粘贴一个简单的卷曲请求,您可以自己尝试并找出如何使用您选择的语言进行复制。
基本上,您需要做的是将文件"multipart/form-data"
“附加”到您发送的用于创建新文件的POST请求中。
curl -i \
-b vtcookies \
-H "Accept: application/json; charset=UTF-8" \
-X POST \
-F '_operation=saveRecord' \
-F 'module=Documents' \
-F 'session=20a5XXXXXXX9a1ba95c19a' \
-F 'values={"notes_title" : "Example title", "assigned_user_id" : "19x1", "notecontent" : "<p>Some content</p>", "filelocationtype" : "I", "filestatus" : 1, "filename" : "set-your-file-name.png"}' \
-F "file=@\"path-to-filename.png\";filename=\"filename.png\"" \
http://localhost:8888/vtigercrm540/modules/Mobile/api.php
此curl示例的实现细节:-b
选项告诉curl在文件中查找会话cookie。要使上面的curl请求起作用,您必须先运行以下一个:
curl -i \
-c vtcookies \
-H "Accept: application/json; charset=UTF-8" \
-X POST \
-F '_operation=login' \
-F 'username=your-username' \
-F 'password=your-password' \
http://localhost:8888/vtigercrm530/modules/Mobile/api.php
在专门请求与PHP有关的问题后添加了以下内容。
根据所请求的PHP语言,这里有更多信息。 我玩了Vtiger WebService Browser project并且我可以提供更多提示(该项目是针对Webservices而不是针对Mobile API,但是提供了一个PHP客户端,其底层概念非常相似)。
Vtiger_HTTP_Client
是Curl_HTTP_Client
的子类。您应该查看send_post_data
,而不是使用send_multipart_post_data
方法。在HTTP_Client.php
文件中有一个名为doPost
的方法。我制作了一个名为doPostFile
的版本,看起来像这样:
function doPostFile($postdata=false, $file, $decodeResponseJSON=false, $timeout=20) {
if($postdata === false) $postdata = Array();
$this->debug = TRUE;
$resdata = $this->send_multipart_post_data($this->_serviceurl, $postdata, $file, null, $timeout);
if($resdata && $decodeResponseJSON) $resdata = $this->__jsondecode($resdata);
return $resdata;
}
在此代码中,$file
变量包含$_FILES["file"]
,其var_dump
如下所示:
array(6) { ["name"]=> string(28) "@8590567929_72c0ded112_o.jpg"
["type"]=> string(11) "@image/jpeg"
["tmp_name"]=> string(36) "/Applications/MAMP/tmp/php/phpZWMXz5"
["error"]=> int(0) ["size"]=> int(1255732) }