Power Automate流中收集图片生成Zip文件无法打开的问题求助
Power Automate生成无效Zip文件的解决方法
你遇到的问题核心是:直接用OneDrive的「创建文件」动作把文件数组写入成Zip,本质是把数组的文本/JSON内容存成了文件,并非真正的Zip二进制流,所以文件无法打开。以下是两种可行的解决方式:
方案一:使用Premium权限的Compress动作(推荐)
如果你的Power Automate有Premium权限,直接用内置的压缩动作生成正确的Zip:
- 移除原来基于数组创建Zip的动作,添加「Data Operations」分类下的Compress动作
- 在「Files to compress」参数中,选择你之前收集的文件数组(注意:数组里的每个文件项必须包含
Content字段,即通过「Get file content」动作获取的文件二进制内容) - 压缩完成后,添加「OneDrive for Business」的「Create file」动作,将Compress输出的「Compressed content」作为文件内容,文件名后缀设为
.zip,文件类型选择application/zip - 之后就可以正常获取这个Zip文件作为邮件附件发送
方案二:调用OneDrive Graph API生成Zip(无Premium权限可用)
如果没有Premium权限,通过HTTP请求调用OneDrive的官方API生成合规的Zip:
- 先添加「OneDrive for Business」的「Get my profile」动作,用于获取访问令牌
- 添加「HTTP」动作,配置如下:
- 方法:
POST - URL:
https://graph.microsoft.com/v1.0/me/drive/items/{目标文件夹ID}/zip(把{目标文件夹ID}替换成你要存放Zip的OneDrive文件夹ID) - Headers:
Content-Type:application/jsonAuthorization:Bearer @{outputs('Get_my_profile')?['body/accessToken']}
- Body(JSON格式,替换成你要打包的文件ID列表):
{ "items": [ {"id": "文件1的OneDrive ID"}, {"id": "文件2的OneDrive ID"} ], "zipFileName": "图片打包.zip" }
- 方法:
- 发送请求后,HTTP动作的「Body」就是Zip的二进制内容,你可以直接用它作为邮件附件,或者通过「Create file」动作保存到OneDrive
常见错误排查
- 确保收集文件时,获取的是文件的二进制内容(Get file content),而非仅文件的元数据(比如文件名、ID)
- 保存Zip文件时,必须指定正确的MIME类型
application/zip,避免系统识别错误 - 单个文件测试时,同样要确保传入的是文件二进制内容,而非文件信息对象
内容的提问来源于stack exchange,提问作者Austin Coleman
相关产品推荐
相关产品推荐

