繁体   English   中英

PHP:在PHP中使用curl通过Microsoft Dynamics CRM将文件上传到sharepoint

[英]PHP : upload file to sharepoint via microsoft dynamics crm using curl in php

我正在尝试使用php将文件上传到Microsoft Dynamics crm,为此,我已将Microsoft共享点集成到crm。 我已经使用curl通过crm将文件上传到共享点,但是在执行curl脚本时遇到411或401 http错误。我是curl的新手。请帮助

<?php 
    ini_set('display_errors','On');
    error_reporting(E_ALL);
    if(isset($_POST['submit']) ) {
        $process = curl_init();
        $username = 'xxx';
        $password = 'xxx';
        $filename = $_FILES['ecosFile']['name'];
        $filedata = $_FILES['ecosFile']['tmp_name'];
        $filesize = $_FILES['ecosFile']['size'];
        $post = array('file' => new CurlFile($filedata), "filename" => $filename);
        print_r($post);
        curl_setopt($process, CURLOPT_URL, 'https://crmsharepoint.XXX/sites/xxx/application/Forms/?RootFolder=xxx'); 
        curl_setopt($process, CURLOPT_HEADER, 1);                                                                           
        curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type:multipart/form-data', 'Content-Length:50'));        
        curl_setopt($process, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);                                                
        curl_setopt($process, CURLOPT_TIMEOUT, 30);
        curl_setopt($process, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);     
        curl_setopt($process, CURLOPT_POSTFIELDS, $post);    
        curl_setopt($process, CURLOPT_INFILESIZE, $filesize);
        curl_setopt($process, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($process, CURLOPT_FOLLOWLOCATION, true);                                                        
        curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);                                                                
        curl_setopt($process, CURLOPT_SSL_VERIFYPEER, FALSE);

        $response = curl_exec($process); 
        $resultStatus = curl_getinfo($process); 
        curl_close($process);
        echo '<pre>';print_r($resultStatus);
        if($resultStatus['http_code'] == 200) {
            echo "hi".$response;
        } else {
             echo 'Call Failed '.print_r($resultStatus);
        }
    }
?>

<div>
   <form action="testingcrm.php" enctype="multipart/form-data" method="post">
       <input type="file" name="ecosFile" id="ecosFile">
       <input type="submit" name="submit" value="Upload">   
   </form>
</div>

您收到错误,因为您需要向SharePoint进行身份验证。 您正在使用SharePoint Online还是本地。 我认为您无法使用PHP解决方案,除非您在向O365进行身份验证时可以通过URL重定向使用自定义代码。

我有一个类似的要求,使用Excel上传到SharePoint,并设计了VBA代码以在线连接到SharePoint,这很难维护,并且损坏了。 我建议您在传递信息(例如文档库,源文件夹,用户名,密码,共享点站点URL)的同时创建一个.NET应用程序,然后它将起作用。

我在Visual Studio的项目引用中有Microsoft.SharePoint,Microsoft.SharePoint.Client,Microsoft.SharePoint.Client.Publishing和Microsoft.SharePoint.Client.Runtime,它的工作方式就像魅力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM