You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:

  1. 先添加「OneDrive for Business」的「Get my profile」动作,用于获取访问令牌
  2. 添加「HTTP」动作,配置如下:
    • 方法:POST
    • URL:https://graph.microsoft.com/v1.0/me/drive/items/{目标文件夹ID}/zip(把{目标文件夹ID}替换成你要存放Zip的OneDrive文件夹ID)
    • Headers:
      • Content-Type: application/json
      • Authorization: Bearer @{outputs('Get_my_profile')?['body/accessToken']}
    • Body(JSON格式,替换成你要打包的文件ID列表):
      {
        "items": [
          {"id": "文件1的OneDrive ID"},
          {"id": "文件2的OneDrive ID"}
        ],
        "zipFileName": "图片打包.zip"
      }
      
  3. 发送请求后,HTTP动作的「Body」就是Zip的二进制内容,你可以直接用它作为邮件附件,或者通过「Create file」动作保存到OneDrive

常见错误排查

  • 确保收集文件时,获取的是文件的二进制内容(Get file content),而非仅文件的元数据(比如文件名、ID)
  • 保存Zip文件时,必须指定正确的MIME类型application/zip,避免系统识别错误
  • 单个文件测试时,同样要确保传入的是文件二进制内容,而非文件信息对象

内容的提问来源于stack exchange,提问作者Austin Coleman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 11:44:51