如何将Telegram API返回的PhotoSize类型转为字节存入SQL数据库
实现PhotoSize转bytes并存入SQL数据表的方案
你获取的update.Message.Photo是PhotoSize类型的数组,包含同一照片的不同分辨率版本,你可以按需选择对应分辨率的实例后下载转成字节数组。
具体操作步骤
- 第一步:选择需要存储的照片分辨率版本,通常优先选择最高清的版本:
// 从PhotoSize数组中选取文件体积最大的高清版本 var targetPhoto = update.Message.Photo.OrderByDescending(p => p.FileSize).First();
- 第二步:调用Telegram Bot客户端的下载方法,将文件转为bytes数组:
// 假设你已经初始化了ITelegramBotClient类型的bot客户端实例 using var memoryStream = new MemoryStream(); await botClient.GetInfoAndDownloadFileAsync(targetPhoto.FileId, memoryStream); byte[] photoBytes = memoryStream.ToArray();
- 第三步:将bytes数组写入SQL数据表
注意:对应的SQL表存储字段需要设置为
varbinary(max)类型,直接将上述photoBytes作为参数写入对应字段即可。
可选优化点
- 如果不需要存储高清原图,可以选取更小分辨率的PhotoSize实例,降低数据库存储占用
- 可以在转成bytes后按需做图片压缩处理,再存入数据库
内容的提问来源于stack exchange,提问作者ali aghakhani
相关产品推荐
相关产品推荐

