Teams消息支持三种不同的方式来添加图片,这篇文章我们来一起看一下这三种方式。

  1. Inline图片
var imagePath = Path.Combine(Environment.CurrentDirectory, "abc.png");
var imageData = Convert.ToBase64String(File.ReadAllBytes(imagePath));
var image = new Attachment
{Name = @"Resources\abc.png",ContentType = "image/png",ContentUrl = $"data:image/png;base64,{imageData}",
};reply = MessageFactory.Text("Hello world");
reply.Attachments = new List<Attachment>() { image };

可以看到这种方式讲图片内嵌到消息里,使用base64的方式来对图片进行编码,在url字段,把编后的base64字符串附加到“data:image/png;base64,”后面。

这种方式适合文件大小较小的图片,因为base64编码本身就会把数据扩大三分之一左右,如果一个图片有600kb,那base64之后,这条消息就起码有800kb多了。

  1. 上传图片到服务器
var imagePath = Path.Combine(Environment.CurrentDirectory, "abc.png");var connector = turnContext.TurnState.Get<IConnectorClient>() as ConnectorClient;var attachments = new Attachments(connector);var response = await attachments.Client.Conversations.UploadAttachmentAsync(conversationId,new AttachmentData{Name = @"Resources\abc.png",OriginalBase64 = File.ReadAllBytes(imagePath),Type = "image/png",},cancellationToken);var attachmentUri = attachments.GetAttachmentUri(response.Id);var image = new Attachment
{Name = @"Resources\abc.png",ContentType = "image/png",ContentUrl = attachmentUri,
};reply = MessageFactory.Text("Hello world");
reply.Attachments = new List<Attachment>() { image };

在这种方式下,先将本地的图片文件上传到conversation里,拿到返回的图片uri,然后在 attachment 的 ContentUrl 里指定图片的url。这种方式是我个人比较推荐的方式。当然这个图片也可以不在本地计算机里,也可以是互联网上的某张图片,我们先把图片下载下来,拿到图片的内容后,就可以调用 UploadAttachmentAsync() 来进行上传了。

  1. 直接使用网上的图片url
var image new Attachment
{Name = @"Resources\abc.png",ContentType = "image/png",ContentUrl = "https://www.blablabla.com/abc.png",
};reply = MessageFactory.Text("Hello world");
reply.Attachments = new List<Attachment>() { image };

可以看到这种方式和第二种的最后一段很像,实际上第二种方式就是多了一步上传过程,拿到上传的图片url后,就和这第三种方式是一样的了。

那我为什么不推荐这种方式呢?因为这种方式实际上是让teams来自己去从网上download那张图片,但是如果teams没有权限访问那个图片url,那虽然这条消息可以发送成共,但是当用户查看这条消息的时候,就会无法显示图片。但第三种方式也有优点,如果这个图片会改变,那用户就能每次看到不同的内容了。

看完这三种方法后,我相信大家已经知道在什么场景下选择什么图片了。 :)

给Teams消息附加图片的三种方式相关推荐

  1. 关于mysql存取图片的三种方式(含源码示例)

    最近在做小程序的后台,要求将小程序用户以upload方法上传的图片保存到mysql数据库中. 然后机缘巧合三种方式都试了,所以专门整理出来分享给大家.可能有的地方说的不太对,欢迎大家帮纠正. ==== ...

  2. ipad使用计算机的图片大全,三种方式备份 iPad 照片

    三种方式备份 iPad 照片 是一个重要的备份照片从 iPad.这是因为这些照片记录了幸福和悲伤在你的生活.为了让他们的肉体,备份是一个不错的选择.照片通常捕获大量的存储,可能会迫使你有没有足够的空间 ...

  3. Html img显示图片的三种方式

    1.显示本地图片 2.显示网络上的图片,不过网络上的图片就是需要每次都去加载,可能会费流量 3.下面这种就是我们今天所要讲的第三种方式显示图片,它其实也就是根据http网络上的图片通过利用Data U ...

  4. MarkDown添加图片的三种方式

    Markdown插图片有三种方法,各种Markdown编辑器的插图方式也都包含在这三种方法之内. 插图最基础的格式就是: ![Alt text](图片链接 "optional title&q ...

  5. QT设置背景图片的三种方式

    QPalette的方法 基本步骤: (1). 首先设置QWidget的autoFillBackground属性为真 (2). 然后定义一个QPalette对象,设置QPalette对象的背景属性(颜色 ...

  6. php 远程图片合拼,php获取远程图片的三种方式

    来源:http://www.phstar.cn/article/258.html 下面介绍 3种php远程获取图片的方法,希望对大家有帮助. 1:file_get_contents,file_put_ ...

  7. python导入图片语法_MarkDown添加图片的三种方式

    插图最基础的格式就是: ![Alt text](图片链接 "optional title") Alt text:图片的Alt标签,用来描述图片的关键词,可以不写.最初的本意是当图片 ...

  8. ps打开图片的三种方式 同步部分基本操作方式

    观看本文 需要您的电脑已安装PS工具 如果没有 可以观看我的文章 PS软件下载安装以基本配置 然后打开PS 就会变成一个这样的界面 然后点击右上角的 PS 进入工作区 然后我们就会进入 一个这样的工作 ...

  9. pictrue获取图片的三种方式

    1.绝对路径:  this.pictureBox2.Image=Image.FromFile("D:\\001.jpg"); 2.相对路径:  Application.Startu ...

最新文章

  1. 我对Node.js Core的首次贡献中学到了什么
  2. iOS 获取self类型
  3. Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name 解决
  4. VMware虚拟机出现Reason: Failed to lock the file
  5. 通过netstat+rmsock查找AIX端口对应进程
  6. 22 Notification 通知栏代码
  7. Linux系统 iptables 和 firewalld 的那些事
  8. wso2 安装_WSO2注册表安装简介
  9. Spring Boot&JPA&Hibernate&Oracle
  10. U盘在Ubuntu20.04下只能读取文件不能向U盘复制文件
  11. LeetCode Largest Number
  12. 简洁优雅抖音在线qu水印HTML源码
  13. oracle导出客户机使用us7a,导出已复制的文件系统 - Oracle® ZFS Storage Appliance 管理指南,发行版 OS8.6.0...
  14. 集成电路pad指的是什么_芯片、半导体、集成电路,你分清楚了吗?
  15. php 打包下载网络图片,php多张图片打包下载
  16. wrapper php,PHP流Streams、包装器wrapper概念与用法实例详解
  17. 「回血赠书」Python入门书单,新年全力扬帆
  18. 【图像配准】基于matlab互信息图像配准【含Matlab源码 1210期】
  19. 一级域名二级域名区别
  20. Responses 部分 | Http Header

热门文章

  1. 怎样获取当前页面值php,想要得到当前页面的所有url参数信息怎么用PHP来实现?...
  2. wpf 如何设置弹出窗口必须关闭才能打开其他软件_5招教你如何清除C盘除系统外的所有垃圾!都学会了吗?...
  3. 智慧政务解决方案(28页)pdf_【金众电子】智慧政务解决方案
  4. PC和服务器的IP地址信息DNS,PC和服务器的IP地址信息DNS
  5. word文本样式代码样式_使用文本样式表达创建真相来源
  6. Github 王炸功能!Copilot 替代打工人编程?
  7. tomcat闪退解决方案
  8. 7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装
  9. confluence5.8.10的使用
  10. lucene两个分页操作