由于钉钉官方文档只对上传多媒体文件接口进行了简单的说明,也只给了java的程序示例,如果采用php程序的话,对上传文件遇到的问题,就不太好解决了。
以下是经过测试,并成功上传文件的php程序利用curl函数,供大家参考。
首先我们写一个上传文件的方法:
/**
请将上面url 里的 ACCESS_TOKEN 换成 真实的调用接口凭证
*$url 为 钉钉的接口地址
*$param 为文件信息
*/
function http_post($url,$param){
$oCurl = curl_init();
//下面判断https 和 http;因为钉钉接口是 Https请求
if(stripos($url,"https://")!==FALSE){
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
}
curl_setopt($oCurl, CURLOPT_URL, $url);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($oCurl, CURLOPT_POST,true);
curl_setopt($oCurl, CURLOPT_POSTFIELDS,$param);
$sContent = curl_exec($oCurl);
$aStatus = curl_getinfo($oCurl);
curl_close($oCurl);
if(intval($aStatus["http_code"])==200){
return $sContent;
}else{
return false;
}
}
//接下来调用方法,上传文件,这次上传是图片格式type=image
$url = 'https://oapi.dingtalk.com/media/upload?access_token=ACCESS_TOKEN&type=image';$file['media'] = "@/www/test.jpg";//这里的“/www/test.jpg”文件的绝对路径
$res = http_post($url,$file);
if($res['errcode'] == 0){
//文件上传成功 $res['media_id'] 就是返回的 素材id
}else{
echo "上传失败";
}
另外官方给的信息 提示需要用 :使用multipart/form-data请求上传文件,这里curl 函数 CURLOPT_POSTFIELDS 里如果传的 一个数组 默认就会以multipart/form-data请求,
所以 文件数据是这样写的:$file['media'] = "@/www/test.jpg"; 以数组形式。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。