以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 钉钉传输文件的接口,如何以二进制形式打开一个文件,传递给服务端? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=159874) |
-- 作者:guosheng -- 发布时间:2021/1/12 9:35:00 -- 钉钉传输文件的接口,如何以二进制形式打开一个文件,传递给服务端? app1/1.txt 是文件的路径,如果在弧表项目下,文件路径是 Dim fl As String = ProjectPath & "Reports\\1.txt" ……url?file=****** 以下是服务端用python写的接口的传参形式:
data = {"media": (\'1234.txt\', open(\'app1/1.txt\', \'rb\').read())} [此贴子已经被作者于2021/1/12 9:37:52编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/1/12 9:42:00 -- 去看钉钉接口的.net代码。 可以参考这里发送文件的用法:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=139788
|
-- 作者:guosheng -- 发布时间:2021/1/13 14:15:00 -- Dim fl As String = Args(0) Dim data() As Byte = System.IO.File.ReadAllBytes(fl) \'把图像文件字节流加载进来, Return Convert.ToBase64String(data) \'转换为Base64格式,不需要做URL编码UrlEncode 如何返回成二进制格式而不是Base64格式啊? 用Convert. |
-- 作者:有点蓝 -- 发布时间:2021/1/13 14:25:00 -- 为什么要使用Convert.ToByte? 钉钉接口说明是怎么上传的?钉钉接口的.net代码又是怎么用的? |
-- 作者:guosheng -- 发布时间:2021/1/13 14:26:00 -- 钉钉接口引用是让用二进制打开一个文件,再操作的。 |
-- 作者:有点蓝 -- 发布时间:2021/1/13 14:28:00 -- 接口文档地址发过来看看 |
-- 作者:guosheng -- 发布时间:2021/1/13 15:11:00 -- https://ding-doc.dingtalk.com/document/app/send-normal-messages https://ding-doc.dingtalk.com/document/app/message-types-and-data-format 多谢了。 以下是用python进行接口发送文件,测试通过了。 import requests url = \'http://send.xinlianhuichuang.com/dingsendfile\' data = {\'name\':\'****\'} files = {\'fb\':open(\'abc.jpg\',\'rb\')} r = requests.post(url, data=data, files= files) |
-- 作者:有点蓝 -- 发布时间:2021/1/13 15:36:00 -- 开发文档没看到有http://send.xinlianhuichuang.com/dingsendfile这个接口的说明 |
-- 作者:guosheng -- 发布时间:2021/1/13 15:42:00 -- 这个是 用python封装了钉钉的发送文件的接口(内部进行了accesstoken和用户id等获取的工作)啊。即:http://send.xinlianhuichuang.com/dingsendfile 接口只需要传name(传钉钉用户名) 和 fb(以二进制形式传一个文件)两个参数即可。 我觉得问题就是:HttpClient对象如何添加一个文件参数(二进制格式),之后发送一个url请求啊。 ----------------------------------------------------------------------- Dim fl As String = Args(0) Dim data() As Byte = System.IO.File.ReadAllBytes(fl) \'把图像文件字节流加载进来, \'Return Convert.ToByte(data) \'转换为Base64格式,不需要做URL编码UrlEncode \'Return Convert.ToBase64String(data) Return data 直接返回byte类型,执行hc.GetData时返回错误: [此贴子已经被作者于2021/1/13 16:06:42编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/1/13 16:12:00 -- 用sdk吧:.NET版本:点击下载 试试 Dim client As new DefaultDingTalkClient("https://oapi.dingtalk.com/media/upload") Dim req As new DingTalk.Api.Request.OapiMediaUploadRequest() req.[Type]= "file" // 要上传的媒体文件 Dim item As new Top.Api.Util.FileItem("c:\\dingtalk.jpg") req.Media=item Dim rsp = client.Execute(req, "key","secret") msgbox(rsp.Body) |