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

如何在Activity/WorkItem中通过签名S3上传端点上传Zip文件?

问题解答

首先明确:无法仅通过WorkItem/Activity的XrefTreeArgument定义完成新的签名式S3上传流程。原因是XrefTreeArgument仅支持单个独立的HTTP请求操作,无法处理需要依赖前一步返回结果的多步串联请求(比如先获取签名URL,再上传文件,最后提交确认这三步,后两步需要用到第一步返回的签名参数)。

可行的替代方案

方案1:在AppBundle插件代码中实现多步上传逻辑

这是最直接的适配方式,你可以在插件代码里完成完整的三步上传流程:

  1. 向/oss/v2/buckets/{bucketKey}/objects/{filename}/signeds3upload发送GET请求,获取上传签名、S3地址等参数
  2. 使用拿到的S3预签名URL,将生成的Zip文件通过PUT请求上传到S3
  3. 再次调用上述端点发送POST请求,携带上传密钥完成上传确认

示例代码逻辑(C#):

// 第一步:获取上传签名
var getSignRequest = new HttpRequestMessage(HttpMethod.Get, $"https://developer.api.autodesk.com/oss/v2/buckets/{bucketKey}/objects/{outputName}/signeds3upload");
getSignRequest.Headers.Add("Authorization", $"Bearer {token}");
var getSignResponse = await httpClient.SendAsync(getSignRequest);
var signData = await getSignResponse.Content.ReadFromJsonAsync<SignUploadResponse>(); // 需定义对应实体类

// 第二步:上传文件到S3
var uploadRequest = new HttpRequestMessage(HttpMethod.Put, signData.UploadUrl);
uploadRequest.Content = new StreamContent(File.OpenRead(outputName));
uploadRequest.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip");
await httpClient.SendAsync(uploadRequest);

// 第三步:确认上传完成
var confirmRequest = new HttpRequestMessage(HttpMethod.Post, $"https://developer.api.autodesk.com/oss/v2/buckets/{bucketKey}/objects/{outputName}/signeds3upload");
confirmRequest.Headers.Add("Authorization", $"Bearer {token}");
confirmRequest.Content = new StringContent(JsonSerializer.Serialize(new { uploadKey = signData.UploadKey }), Encoding.UTF8, "application/json");
await httpClient.SendAsync(confirmRequest);

方案2:客户端接收WorkItem输出后完成上传

如果不想修改AppBundle代码,可以将WorkItem的输出Zip文件先下载到客户端,再在客户端执行上述三步上传流程。这种方式不需要改动插件代码,但需要客户端额外处理文件下载和上传逻辑。

补充说明

Design Automation的XrefTreeArgument设计初衷是处理简单的单步文件传输(比如直接下载输入文件、上传输出文件到指定HTTP端点),不支持复杂的多步依赖式HTTP交互。因此新的签名上传流程无法通过原有的XrefTreeArgument配置实现,必须通过代码层面的逻辑来完成。

内容的提问来源于stack exchange,提问作者Mark Brouwers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:47:38