最近一个项目需要在钉钉中导出excel。钉钉的文件导出都是工作通知的形式导出。工作通知只能附带媒体文件(media,钉钉自定义的说法),所以采取的策略是先在服务端生成要导出的excel文件,在通过钉钉上传媒体文件接口生成媒体文件,然后通过钉钉的工作通知下发给用户。中间被上传媒体文件接口卡了半天,记录一下,也希望能帮助到遇到相同问题的同行。最后吐槽下钉钉的文档写的是真的简略。

回到正题,首先来看钉钉的文档。

对数据格式和文件名称都有要求。这个media参数是重点。

最开始的时候是直接用的php的curl做post请求,代码如下,其中'Content-Type: application/json; charset=utf-8'设置为了multipart/form-data;,$data就是上面的media,但是钉钉的接口返回提示是参数类型不符合要求。

这就让人纳闷了。在网上查询了下,貌似钉钉的意思是要手动拼接form-data数据,然后传给他。在网上看了下各种写法,最后翻了下sdk的源码,找到上传文件的地方,研究了下,根据sdk的源码稍微微调了下,最后成功把文件上传到钉钉了。

下面这张图里面的$delimiter变量是分割符,$file是文件,用file_get_contents读取。

从上面的图可以看到是有个专门的函数拼接数据的,这就是这次的重点。放下面

sdk里面是写了多参数的循环处理,我这只用上传图片就给简化了,只写了一个文件上传,现在可以看到,为啥钉钉会说你参数类型不对了,因为人家根本就不读你的header头。name=media ,filename就是你要上传的文件。

拼接完后按照正常的curl发出个post请求,搞定。

文件上传的post请求也贴下,还是给设置了header头。

python上传钉钉媒体文件_钉钉媒体文件上传相关推荐

  1. 钉钉如何群里定时发送文件_使用钉钉APP实现多人在线协同编辑文档

    钉钉是阿里系综合智能移动办公平台软件,利用钉钉平台,可以完成基本的线上办公功能. 使用钉钉进行对文档的多人在线协同编辑是一种非常便捷的办公应用. 钉钉支持电脑端.手机端等多平台操作. 下面以手机端钉钉 ...

  2. linux禁止客户端上传文件_实战 FastDFS Java 客户端上传文件

    FastDFS 服务端安装参考文章:分布式文件系统之 FastDFS 安装 FastDFS Java 客户端 先从 GitHub 上将项目源码克隆下来: $ git clone https://git ...

  3. springboot 上传文件_基于SpringBoot的文件上传

    在实际的企业开发中,文件上传是最常见的功能之一,SpringBoot集成了SpringMVC常用的功能,当然也包含了文 件上传的功能,实现起来没有太多的区别. 下面我们来讲解一下,使用SpringBo ...

  4. formdata上传文件_封装一个多文件断点续传、分片上传、秒传、重试机制的组件...

    本文为:多文件断点续传.分片上传.秒传.重试机制 的更新版,若想看初始版本的实现,请查看该文章. 凡是要知其然知其所以然 文件上传相信很多朋友都有遇到过,那或许你也遇到过当上传大文件时,上传时间较长, ...

  5. java web上传视频文件_怎样使用javaweb实现上传视频和下载功能?

    HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> My JSP 'index.jsp' starting page ...

  6. python怎么运行ipynb文件_如何运行.ipynb文件的图文讲解

    如何运行.ipynb文件的图文讲解 首先cmd下面输入: pip install jupyter notebook,安装慢的改下pip的源为国内的源 然后cmd中输入: jupyter noteboo ...

  7. python stl文件_打开本地STL文件并创建webgl使用的geometry

    需求 打开本地STL文件 一个独立基于webgl的viewer,会被别的网站重用 将打开文件的数据传输给viewer,并且在文件加载的时候显示进度条 解决方案 #1可以使用传统的html5 api来打 ...

  8. iphone 传android,安卓和苹果手机怎么互传文件_安卓与苹果手机之间互传文件的方法教程_3DM手游...

    一直以来,很多的app都是分为安卓和IOS两个版本,在使用上,两个平台之间很多功能都不能跨平台使用.比如大家在玩游戏时充值的东西,在苹果充值之后,同一个账号转到安卓手机上玩,那些东西都是不能迁移进来的 ...

  9. 如何在手机上打开xmind文件_如何将 XMind 文件从电脑上传输至 XMind 安卓版? – XMind帮助中心...

    XMind 目前没有自带文件同步或云储存的功能,XMind 安卓版与其他版本之间需要通过文件传输的方式,实现文件跨平台使用. 1. 利用第三方云服务进行文件传输 在电脑上将 .xmind 上传至第三方 ...

  10. iphone android互传文件夹,安卓和苹果手机怎么互传文件_安卓与苹果手机之间互传文件的方法教程_3DM手游...

    一直以来,很多的app都是分为安卓和IOS两个版本,在使用上,两个平台之间很多功能都不能跨平台使用.比如大家在玩游戏时充值的东西,在苹果充值之后,同一个账号转到安卓手机上玩,那些东西都是不能迁移进来的 ...

最新文章

  1. 简谈-Python一些常用的爬虫技巧
  2. java项目_JNPF快速开发平台-简单快速高效开发java项目
  3. 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法
  4. Java面试参考指南——同步
  5. 使用Matlab求解定积分/不定积分
  6. .NET 分布式自增Id组件(解决自动分配机器Id、时间回拨问题)
  7. php语法介绍,PHP 函数语法介绍一
  8. 代码生成利器-NCodeGenerate 教程(2) NCodeGenerate的代码公用之一
  9. storm能不能测试wadl_测试网红燃油宝到底能不能除积碳,看完不花冤枉钱
  10. Queue - 一种线程安全的FIFO实现
  11. 常用 ajax js 表单
  12. jquery的eval的使用
  13. 如何在IntelliJ IDEA 中新建一个项目Project
  14. Flink系列文档-(YY05)-Flink编程API-多流算子
  15. 车载OS的战场:万亿美金入口之争
  16. 宜信实习经历: “明年暑假,我还要再来”
  17. xp如何开启远程服务器,XP系统打开远程桌面与修改3389端口的操作步骤
  18. 数值方法笔记1:数字表示与误差分析
  19. OneHZ Math of Rapid Calculation
  20. c语言铁路托运行李费用图,铁路行李、包裹运价(20200923152522).pdf

热门文章

  1. 蒙特.卡罗方法求解圆周率近似值原理与Python实现
  2. Python获取numpy数组中最大的5个元素(保持原顺序)
  3. 详解Python中的浅复制与深复制
  4. java最广泛的运行环境_Java运行环境下载|Java SE Runtime Environment(Java运行环境)8.0.131 官方多语言正式版_ - 极光下载站...
  5. mysql explain key为空_MySQL中explain的使用以及性能分析
  6. python 读取内存_python内存读写
  7. (5)DFS(深度优先搜索算法):排列数字
  8. C++之继承探究(七):虚析构函数
  9. ecs云服务器 系统登陆密码,云服务器ecs系统登录密码
  10. java逗号的转义字符是,Java是否有'@'字符来转义字符串引号?