新版钉钉API PHP文件上传流程

1.调用文件上传信息接口,获取临时授权码,测试代码如下。
use AlibabaCloud\SDK\Dingtalk\Vdrive_1_0\Dingtalk;
		# 需要注意的是这里的钉钉客户端在包 AlibabaCloud\SDK\Dingtalk\Vdrive_1_0
        $client = new Dingtalk();
        $getUploadInfoHeaders = new GetUploadInfoHeaders([]);
        $getUploadInfoHeaders->xAcsDingtalkAccessToken = '<your accessToken>';
        $getUploadInfoRequest = new GetUploadInfoRequest([
            "unionId" => $unionId,
            "fileName" => $fileName,
            "fileSize" => $fileSize,
            "md5" => md5($fileName),
            "addConflictPolicy" => "autoRename"
        ]);
 
           $res = $client->getUploadInfoWithOptions($spaceId, $parentId, $getUploadInfoRequest, $getUploadInfoHeaders, new RuntimeOptions([]));
           return $res->body->stsUploadInfo;

返回参数如钉钉文档,得到这些参数以后调用 OSS STS (Security Token Service)接口授权文件上传

钉钉官方文件上传API截图

	use OSS\OssClient;
	use OSS\Core\OssException;
	
    /**
     * @param $securityToken '授权码'
     * @param $accessKeyId  '阿里云账号的临时accessKeyId'
     * @param $accessKeySecret '阿里云账号的临时accessKeySecret'
     * @param $endPoint 'OSS访问域名'
     * @param $bucket   'OSS存储空间'
     * @param $ossKey '对应OSS Object Key  <mediaId>'
     */
    public static function OSSUpload(
        $securityToken,
        $accessKeyId,
        $accessKeySecret,
        $endPoint,
        $bucket,
        $ossKey,
        $filePath)
        {
        	# 需要注意的是 这里的 $endPoint 一定要加 "https://"
            $ossClient = new OssClient($accessKeyId, $accessKeySecret, "https://".$endPoint, false, $securityToken);
            // 使用STS临时授权上传文件。
            $ossClient->putObject($bucket, $ossKey, $filePath);
        }

文件上传成功以后,使用第一个接口返回的 mediaId 调用添加钉钉文件的接口就可以在钉钉云盘看到文件并使用文件啦。
以下示例是官网直接copy的 具体文档地址为

https://open.dingtalk.com/document/isvapp-server/add-file

		use AlibabaCloud\SDK\Dingtalk\Vdrive_1_0\Dingtalk;
		
  		$client = self::createClient();
        $addFileHeaders = new AddFileHeaders([]);
        $addFileHeaders->xAcsDingtalkAccessToken = "<your access token>";
        $addFileRequest = new AddFileRequest([
            "addConflictPolicy" => "autoRename",
            "fileName" => "fileName",
            "unionId" => "unionId",
            "mediaId" => "mediaId",
            "parentId" => "parentId",
            "fileType" => "fileType"
        ]);
            $client->addFileWithOptions("spaceId", $addFileRequest, $addFileHeaders, new RuntimeOptions([]));
        }

需要注意的是,如果出现 accessToken不合法的问题,可能是因为PHP SDK处理字符串方法的问题,进入执行的方法,复制一个新的文件出来做出如下修改。

	# 修改前
	   if (!Utils::isUnset($headers->xAcsDingtalkAccessToken)) {
            @$realHeaders['x-acs-dingtalk-access-token'] = Utils::toJSONString($headers->xAcsDingtalkAccessToken);
        }
	# 修改后
    if (!Utils::isUnset($headers->xAcsDingtalkAccessToken)) {
            @$realHeaders['x-acs-dingtalk-access-token'] = $headers->xAcsDingtalkAccessToken;
      }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值