如何从Dataverse图片列中获取文件扩展名?
解决Dataverse Image列在Power Automate中获取文件扩展名的问题
方法1:直接用Dataverse自带的MIME类型属性
Dataverse会给每个Image列自动生成一个配套的MIME类型属性,命名规则是[你的Image列名]_MimeType(比如你的Image列叫UserPhoto,这个属性就是UserPhoto_MimeType)。这个属性里直接存了图片的MIME类型,拿来映射扩展名最靠谱:
- 在Power Automate的「List rows」操作里,勾选这个MIME类型属性,把它加入返回字段
- 加一个「Compose」操作,用条件表达式把MIME类型转成扩展名:
if(equals(items('Apply_to_each')?['userphoto_mimetype'], 'image/jpeg'), '.jpg', if(equals(items('Apply_to_each')?['userphoto_mimetype'], 'image/png'), '.png', if(equals(items('Apply_to_each')?['userphoto_mimetype'], 'image/gif'), '.gif', '.bmp'))) - 创建SharePoint文件时,把这个Compose的结果拼到文件名后面就行
方法2:解析文件Base64开头判断格式
如果因为某些原因拿不到MIME类型属性,就直接从文件内容下手——图片的Base64编码开头有固定特征,适合拍照场景(主流是JPG/PNG):
- 用Dataverse的「Download a file or image」操作下载图片,拿到二进制内容
- 加「Compose」操作,把二进制转成Base64:
base64(body('Download_a_file_or_image')) - 加条件分支判断开头:
- 开头是
/9j/→ 是JPG,用.jpg - 开头是
iVBOR→ 是PNG,用.png - 开头是
R0lGOD→ 是GIF,用.gif
- 开头是
- 把判断出的扩展名用在SharePoint文件命名上
额外提示
拍照上传的图片基本都是JPG或PNG,上面两种方法足够覆盖绝大多数场景。要是需要兼容更多格式,只要扩展对应的MIME类型或Base64特征判断就行。
内容的提问来源于stack exchange,提问作者Mervyn
相关产品推荐
相关产品推荐

