Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过vtiger 5.4 webservice添加/上载文件_Php_Vtiger - Fatal编程技术网

Php 通过vtiger 5.4 webservice添加/上载文件

Php 通过vtiger 5.4 webservice添加/上载文件,php,vtiger,Php,Vtiger,我正试图通过vtiger 5.4 Web服务创建一个带有附加文件的文档 创建文档非常简单,但我不清楚添加文件的过程。 这似乎是一个分为两步的过程: 上传文件 将文件引用到文档 除非有一种直接的方法将文件与document对象一起上传,否则我找不到任何关于这个主题的文档(除了基本的、基本的webservices文档) 希望有什么指点。 谢谢 您没有指定使用哪种语言,因此我将在这里粘贴一个简单的curl请求,您可以自己尝试,并找出如何用您选择的语言复制它 基本上,您需要做的是将文件作为“multip

我正试图通过vtiger 5.4 Web服务创建一个带有附加文件的文档

创建文档非常简单,但我不清楚添加文件的过程。 这似乎是一个分为两步的过程:

  • 上传文件
  • 将文件引用到文档
  • 除非有一种直接的方法将文件与document对象一起上传,否则我找不到任何关于这个主题的文档(除了基本的、基本的webservices文档)

    希望有什么指点。
    谢谢

    您没有指定使用哪种语言,因此我将在这里粘贴一个简单的curl请求,您可以自己尝试,并找出如何用您选择的语言复制它

    基本上,您需要做的是将文件作为
    “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
    
    在明确提出与PHP有关的问题后,添加了以下内容

    根据请求的PHP语言,这里有更多信息。 我使用了,我可以给出更多提示(该项目是针对Webservices的,而不是针对mobileapi的,但提供了一个PHP客户机来使用,其基本概念非常相似)

    Vtiger\u HTTP\u客户端
    Curl\u HTTP\u客户端
    的一个子类。与其使用
    send\u post\u data
    方法,不如查看
    send\u multipart\u post\u data
    。在
    HTTP\u 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
    变量包含
    $\u文件[“file”]
    ,其
    变量转储类似于:

    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) }
    

    谢谢我试试看。我使用的是php,但是你的例子还是有帮助的。嗨,我编辑了我的答案,希望能更有用。如果你认为这是一个可以接受的答案,请告诉我。谢谢
    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) }