Power Automate实现Forge设计自动化Task3:AppBundle上传HTTP错误解决
解决Power Automate上传Forge AppBundle时的InvalidArgument错误
问题场景
使用Power Automate实现Autodesk Forge设计自动化Task3(上传AppBundle)时,最后一步HTTP上传动作报错,错误信息如下:
<?xml version="1.0" encoding="UTF-8"?> <Error><Code>InvalidArgument</Code><Message>POST requires exactly one file upload per request.</Message><ArgumentName>file</ArgumentName><ArgumentValue>0</ArgumentValue><RequestId>2N9YNZ2J8M7CSDN0</RequestId><HostId>GH6fZMc9G4lqD5/VdQX3tdkTXoXRDO7Sm0qKK0jtHGLWt7PFBrki2fzhj1YKR4P4mkfG6+VMTRk=</HostId></Error>
原流程步骤:
- HTTP - 注册AppBundle(已完成)
- Get file Content using path - 获取ZIP文件内容(已完成)
- Compose - 创建boundary(已完成)
- Compose - 创建Multipart Content(已完成)
- HTTP - 上传AppBundle(报错)
问题根源
手动拼接multipart/form-data请求体的方式存在缺陷:Power Automate中直接拼接文本+base64编码的文件内容,无法被Forge上传后端的S3存储正确识别为二进制文件流,导致服务端检测不到有效文件内容,触发file参数值为0的错误。
修正方案
放弃手动拼接Multipart内容,改用Power Automate原生的Form Data格式构建HTTP请求体,具体步骤如下:
删除冗余步骤:移除原流程中的两个Compose动作(Create Boundary和Create Multipart content),无需手动处理boundary和请求体拼接。
重新配置上传AppBundle的HTTP动作:
- 方法:选择
POST - URI:填写表达式
@body('Parse_JSON')?['uploadParameters']?['endpointURL'] - Headers:仅保留必要项(可移除
Cache-Control和手动设置的Content-Type,Power Automate会自动处理) - Body类型:选择Form Data,然后逐个添加以下字段:
字段名称 值来源表达式 key @body('Parse_JSON')?['uploadParameters']?['formData']?['key']content-type @body('Parse_JSON')?['uploadParameters']?['formData']?['content-type']policy @body('Parse_JSON')?['uploadParameters']?['formData']?['policy']success_action_status @body('Parse_JSON')?['uploadParameters']?['formData']?['success_action_status']success_action_redirect @body('Parse_JSON')?['uploadParameters']?['formData']?['success_action_redirect']x-amz-signature @body('Parse_JSON')?['uploadParameters']?['formData']?['x-amz-signature']x-amz-credential @body('Parse_JSON')?['uploadParameters']?['formData']?['x-amz-credential']x-amz-algorithm @body('Parse_JSON')?['uploadParameters']?['formData']?['x-amz-algorithm']x-amz-date @body('Parse_JSON')?['uploadParameters']?['formData']?['x-amz-date']x-amz-server-side-encryption @body('Parse_JSON')?['uploadParameters']?['formData']?['x-amz-server-side-encryption']x-amz-security-token @body('Parse_JSON')?['uploadParameters']?['formData']?['x-amz-security-token']file 选择File content,关联 Get file content using path的输出;文件名填写你的ZIP文件名(如ListLayers.zip)
- 方法:选择
原理说明
Power Automate的Form Data会自动处理:
- 生成合法的boundary分隔符
- 正确编码二进制文件内容
- 自动设置符合规范的
Content-Type头
完全匹配教程中curl命令的上传逻辑,确保S3能正确识别文件内容,解决InvalidArgument错误。
验证方法
运行修正后的流程,若HTTP动作返回201 Created或200 OK状态码,说明上传成功。可登录Forge开发者后台,查看AppBundle的状态是否为Uploaded。
内容的提问来源于stack exchange,提问作者AI-DataDrivenPowerAutomation
相关产品推荐
相关产品推荐

