1.创建钉盘空间并获取spaceId
(1).创建钉盘空间
进入钉钉选择“云盘”,点击“团队文件”然后新建一个文件夹,给当前钉钉团队所有用户(或者能够使用该企业内部应用小程序的用户)分配“可管理”权限,该权限包括:上传、下载、编辑、删除。后续在钉钉小程序上传附件过程中会同时用到该空间附件的:上传、下载、删除权限。 
(2).获取钉盘spaceId
文档地址
返回值
{
"spaces" : [ {
"spaceId" : "123456789",
"spaceName" : "张三的共享文件夹",
"spaceType" : "org",
"quota" : 2147483648,
"usedQuota" : 640445953,
"permissionMode" : "acl",
"createTime" : "2016-02-28T10:47:08Z",
"modifyTime" : "2021-03-29T14:20:36Z"
} ],
"nextToken" : "fekaf"
}
2.小程序端调用dd.uploadAttachmentToDingTalk
该API会将文件直接上传至你所指定的钉盘空间中,所以必须分配权限,否则会出现类似没有权限的报错。 文档地址
示例代码
dd.uploadAttachmentToDingTalk({
image:{multiple:true,compress:false,max:9,spaceId: "12345"},
space:{spaceId:"12345",isCopy:1 , max:9},
file: {spaceId:"12345",max:1},
types:["photo","camera","file","space"],
success: (res) => {
},
fail: (err) =>{
dd.alert({
content:JSON.stringify(err)
})
}
})
3.服务端处理下载以及上传第三方服务器的操作
(1)服务端下载文件
①.获取文件下载信息
文档地址
返回值
{
"downloadInfo" : {
"resourceUrl" : "https://xxx.xxxx",
"expirationSeconds" : 900,
"headers" : {
"Authoration" : "xxx",
"Date" : "xxx"
}
}
}
②.下载文件
文档地址
③.删除钉盘空间文件
此操作在服务端将文件下载完成之后,目的是清空钉盘空间,避免占用空间。 文档地址
(2).服务端将从钉盘下载下来的文件上传至第三方文件服务器并返回给小程序客户端进行查看.
4.总结
在钉钉小程序端,如果需要上传文件至第三方文件服务器,必须借助“钉盘”这个中转站 ,不可直接从小程序调用API发送至第三方文件服务器。微信小程序的步骤就更方便一点,可以调用wx.chooseMessageFile从客户端会话选择文件上传,但微信小程序仅支持从“客户端会话选择文件”,而钉钉小程序则可以选择手机中文件及钉盘中文件。
|